标签:
多态:父类的引用指向子类的对象.
* 父类的引用:一是指父类变量指向那个内存空间
* 二:也是父类自有的类型信息表,这个表是任何对象都具备的,和继承多态无关.
* 子类的对象:一是指子类的那个堆内存空间
* 二:也是指子类的那个类型信息表
* 多态(向上转型):就是用父类对象的类型信息表去调用子类类型信息表中和父类相同的成员方法
* 所谓相同,就是之前子类覆写/重写父类方法
* 父类信息表中没有的成员方法,就调用不到.
* 静态方法,静态数据,成员变量和这个无关.父类引用访问到的还是父类型中所有的变量和方法,无论是成员还是静态的
* 父类 a = new 子类();想知道的是,父类对象有吗?
* 向下转型后,用子类的类型信息表替代父类的类型信息表,就可以完全的让位子类对象中所有的变量和方法
* 父类类型访问父类型信息表,
* 向下转型后,访问子类型的信息表
* 不转型,可以访问子类中覆写后的成员方法
*
* 注意:
* 多态在客户端类和类库类中的区别
* 客户端类:包含main()的类叫客户端类
* 首先在类库类中,有继承关系,并且子类重写了父类的方法
* 然后在客户端类中,用父类的引用指向子类的对象
在多态中,只涉及成员方法
* 成员变量:不涉及
* 构造方法:根本就不继承,所以也不涉及
* 静态方法:静态方法也不继承,属于整个类型
标签:
原文地址:http://www.cnblogs.com/zdalongjava/p/4679483.html