有时在论坛里看到一些知识点,发现自己理解有问题,现在这里记录下。
1.继承之变量和方法
Child继承Parent,子类的变量和静态方法分别隐藏父类的变量和静态方法,子类的实例方法覆盖父类的实例
方法。隐藏只是把父类的东东藏起来,但是其还是实质存在的;而覆盖就是把父类的东东完全抹掉以替换成子类的,是不
可恢复的。在child被强制转换成Parent类型后,被隐藏的东西又被恢复了,而被覆盖的方法却是一去不复返了(子类的方
法在这个实例里面永久替代了原先父类的方法)。
2、java虚拟机绑定规则
通过引用类型变量来访问引用对象的方法和属性时:
a、实例方法与引用变量实际引用的对象的方法绑定,这种绑定属于动态绑定,因为实在运行时有java虚拟机动态决定的。
b.静态方法与引用变量所声明的类型的方法绑定,这种绑定属于静态绑定,因为实际上实在编译阶段就已经作了绑定。
c.成员变量(包括静态变量和实例变量)与引用变量所声明的类型的成员变量绑定,这种绑定属于静态绑定,因为实际上在
编译阶段就已经作了绑定。
动态绑定思想:在运行时环境中,当通过某类的实例去调用一系列实例方法(包括一个方法调用另一个方法),将优先和此
类本身的实例方法绑定,如果此类没有定义这个实例方法,才会从父类中继承类的实例方法动态绑定。