子父类一个调用的问题

来源:百度知道 编辑:UC知道 时间:2024/05/25 06:40:09
class Parent {
public void method1() {
System.out.println("Parent's method1()");
}

public void method2() {
System.out.println("Parent's method2()");
method1();
}
}

class Child extends Parent {
public void method1() {
System.out.println("Child's method1()");
}

public static void main(String args[]) {
Parent p = new Child();
p.method2();
}
}

解释下,打印出Child's method1()的原因

这里产生了多态的效果
Parent p = new Child(); 将之类对象赋值给父类对象,产生多态
子类继承父类时产生了父类方法的覆盖 当p.method2(); 时调用了子类的方法2 方法2调用子类的方法1就得到了
打印出Child's method1() 的结果

由于父类对象指向子类引用,父类调用的方法当然也就子类的
如果子类对象指向父类,那么子类对象调用的方法也就是父类的

父类对象指向到了子类, 那么就会应用已经重写过的方法,也就是子类中的method1()
在执行method2()是调用了method1() 方法,自然结果会是Child's method1()