运行 TestInherits.java 示例,观察输出,注意总结父类与子类之间构造方法的调用关系修改Parent构造方法的代码,显式调用GrandParent的另一个构造函数,注意这句调用代码是否是第一句,影响重大!
方法覆盖要求子类与父类的方法一模一样,否则就是方法重载(overload)!
package morexiangcheng;
public class ParentChildTest {
public static void main(String[] args) {
Parent parent = new Parent();
parent.printValue();
Child child = new Child();
child.printValue();
parent = child;
parent.printValue();
parent.myValue++;
parent.printValue();
((Child) parent).myValue++;
parent.printValue();
}
}
class Parent {
public int myValue = 100;
public void printValue() {
System.out.println("Parent.printValue(),myValue=" + myValue);
}
}
class Child extends Parent {
public int myValue = 200;
public void printValue() {
System.out.println("Child.printValue(),myValue=" + myValue);
}
}