34-多态
多态的具体体现
1.方法的多态,重写和重载就体现多态
2.对象的多态 (核心,困难,重点)
编译时aninal是Aniaml,运行是animal是Dog
(1)一个对象的编译类型和运行类型可以不一致
(2)编译类型在定义对象时,就确定了,不能改变
(3)运行类型是可以变化的.
(4)编译类型看定义时=号的左边,运行类型看=号的右边
案例:
Animat animal = new Dog(); (animal 编译类型是Animal,运行类型Dog)
animal = new Cat(); (animal 的运行类型变成了Cat,编译类型仍然是Animal)
调用方法时,会首选运行类型的。属性会首选编译类型的。
多态的应用:
多态数组:数组的定义类型为父类类型,里面保存的实际元素类型为子类类型

多态参数:方法定义的形参类型为父类类型,实参类型允许为子类类型

多态简介
1)本质:父类的引用指向了子类的对象
2)语法:父类类型   引用名= new子类类型();
3)特点:编译类型看左边,运行类型看右边。
可以调用父类中的所有成员(需遵守访问权限),
不能调用子类中特有成员;
最终运行效果看子类的具体实现!

多态注意事项:
1.多态是方法的多态,属性没有多态
2.父类和子类,有联系
3.多态存在条件:
 有继承关系
 方法需要重写
 父类引用指向子类对象 Father f1 = new Son();
instanceof
instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例
System.out.println(x instanceof Y); 

instanceof结果为true可进行类型转换

- 把子类转换为父类,向上转型
- 把父类转换为子类,向下转型:强制转换
- 方便方法调用,减少重复的代码
java的动态绑定机制
1.当调用对象方法的时候,该方法会和该对象的内存地址/运行类型绑定
2.当调用对象属性时,没有动态绑定机制,哪里声明,那里使用
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号