我对对象生命周期感到困惑。如果指向子类对象和方法的父类引用被覆盖。例如
class Parent {
public void display(){
System.out.println("i am from Parent");
}
}
class Child extends Parent {
public void method1() { }
public void display(){
System.out.println("i am from Child class");
}
}
现在如果我创建主类
Parent p = new Child();
我理解的对象生命周期是否正确?如果没有请指导我。
新的
Child()
构造函数被调用通过
super()
方法父类构造函数(默认构造函数)被调用现在根据对象生命周期调用第一个构造函数并将
display()
父类中的方法的具体方法存储在堆中。在子类构造函数完成执行后
method1()
,display()
方法被存储在堆内存中。
现在,如果我调用p.display()
它来执行子类display()
方法,但是如果您看到父类和子类display()
方法都存储在堆内存中。
如果这种行为正确,那么display()
在堆中存储父方法有什么用。