多态的体现。
代码如下;
package TestMENG;
public class Base {
int i = 99;
public void amethod() {
System.out.println(" Base.amethod() ");
}
Base() {
amethod();
}
}
package TestMENG;
public class Derived extends Base {
int i = -1;
public static void main(String argv[]) {
Base b = new Derived();
System.out.print(b.i);
b.amethod();
}
public void amethod() {
System.out.print(" Derived.amethod() ");
}
}
控制台打印输出: Derived.amethod() 99 Derived.amethod()
上面代码经过debug调试 效果如下
当执行到Base()方法中的 amethod()方法时 将会跳转到子类Derived.amethod()方法中。
涉及到的知识点:
1.父类的属性 不能被子类覆盖。
2.在实例化子类对象时,如果父类的实例引用了子类的对象(多态),例如:父类 实例 = new 子类()
那么该引用在调用父类的方法时遵循以下原则
2.1 该实例 可以调用父类中特有的方法。(该方法未被子类重写)
2.2 该实例如果调用父类中的方法,若该方法被子类重写,则一定调用的是在子类中重写后的该方法。
2.3 该实例不可以调用父类中没有的方法。(该方法子类特有)