多态注意事项和细节讨论

多态的前提是:两个对象(类)存在继承关系

属性没有重写的说法,属性的值看编译类型

多态的向上转型

  1. 本质:父类的引用指向了子类的对象

  2. 语法:父类类型 引用名= new 子类类型()

  3. 特点:变异类型看左边,运行类型看右边

    可以调用父类中的所有成员(需遵守访问权限)

    但是不能调用子类的特有的成员

    最后的运行效果看子类的具体实现,先找子类重写的方法

多态的向下转换

  1. 语法:子类类型 引用名 =(子类类型)父类引用;

  2. 只能强转父类的引用,不能强转父类的对象

    Animal animal = new Dog();

  3. 要求父类的应用必须指向的是当前目标类型的对象

    Dog dog =(dog)animal;

  4. 当向下转型后,可以调用子类类型中所有的成员

instanceof比较操作符

用于判断对象的运行类型是否为xx类型或xx类型的子类型