System.out.println(X instanceof Y);//能否编译通过看X和Y是否有父子关系
public class Demo{ public static void main(String[] args){ Person obj = new Student(); ((Student)obj).go();//student将这个对象转换成Student类型,就可以使用Student类型的方法了 } }
多态小结:
父类引用指向子类对象
把子类转换为父类,向上转型
把父类转换为子类,向下转型,需要强转(可能会丢失某些方法)
方便方法的调用,减少重复的代码
非静态方法需要通过new关键字创建对象来调用
非静态方法可以调用静态方法,静态方法可以调用静态方法,但是不能调用非静态方法
静态代码块:只执行一次
用关键字abstract修饰的类为抽象类,用关键字abstract修饰的方法为抽象方法
抽象类中可以有普通方法,有抽象方法的类一定是抽象类
抽象方法只有方法名,没有方法的具体实现
特点:1.不能用new抽象类,只能靠子类去实现它
2.抽象的抽象:约束
关键字:interface
普通类:只有具体实现
抽象类:具体实现和规范(抽象方法)都有
接口就是规范,定义的一组规则
接口的本质是契约
接口都有实现类,通常以Impl结尾来命名,如StudentImpl
总结:
接口起约束作用
接口用来定义一些方法,可以让不同的人来实现
方法的默认修饰符是public static
常量的默认修饰符是public static final
接口不能被实例化,接口中没有构造方法
implements可以实现多个接口
实现接口中的类,必须重写接口中的方法
即在一个类中再定义一个类
一个Java类中可以有多个class类,但是只能有一个public类