有关于多态和静态绑定与动态绑定的知识
一、多态
事物出现的多种体现形态(Java中指同一对象可以有不同类型的指向。)
1、多态的体现:
父类的引用指向了自己的子类的(或孙类)的对象。
父类的引用也可以接受自己的子类对象。
2、多态的前提:
1)、必须是类与类之间有关系,要么继承、要么实现。
2)、存在继承、 存在方法重写、 存在父类引用指向子类对象。
3、多态的好处:
提高了代码的复用性。
4、多态的弊端:
但是只能是父类的引用指向父类的成员。
5、多态的应用:
6、多态的代码特点(代码的注意事项)
1)、多态中成员函数的特点:
1、在编译时期:参阅引用型变量所属类中是否有调用的方法,如果有,编译通过, 否则,编译失败。
2、在运行时期:参阅对象所属类中是否有所属方法。
简单总结:成员函数在多态调用时,编译看左边、运行看右边。(动态绑定,迟绑定)
2)、多态中成员变量的特点:
编译和运行都参考左边的,(总结就是: 静态绑定)
二、数据转型:
1、向上转型(up casting):就是将子类的对象转型成父类的引用(就是父类引用指向了子类的对象,此时此引用只能看见(访问)父类的成员)。
2、向下转型(down casting):将向上转型的引用再转回来,就叫向下转型(此时引用能看见(访问)子类的成员变量)。
三、绑定:
1、静态绑定:
1)、存在条件:存在多态(继承、重写、转型)。
2)、其中的“重写”的是静态方法、静态成员变量、成员变量。
2、动态绑定:
1)、存在条件:存在多态(继承、重写、转型)。
2)、其中的“重写”的是非静态的方法。
四、多态总结:
多态就是同一个对象在整个继承体系的不同表型形势, 也就是对于一个对象的不同引用。
注:就是说, 对于一个确定的对象,不能向比他本身更低的类型转变。
五、关键字:instanseof
用来判断一个对象是否属于某个类型,此处的类型是代表对象本身的类型(被new出来时的本来类型)。
使用方法:对象名.instanceof 类型名 :cat1.instanceof Cat; 或者: cat.instanceof Animal 。