在堆上创建对象

Object creation on Heap

class Person {
    public Person(){}
}
class Employee extends Person{
    public Employee() {}
}
class Manager extends Employee{
    public Manager() {}
}
public class HeapObjectTest {
    public static void main(String[] args) {
        Manager manager = new Manager();}
}

上面的代码会在堆上创建多少对象?

如果我们只谈论您的代码,那么只有 one Manager object,并且将有构造函数链接直到对象 class。除了这个对象之外,JVM 还需要其他对象来 运行 你的程序,这些将是 class objects, method objects 当前加载到 运行 你的程序中。

有关任何程序的执行顺序的更多详细信息,以加深理解,请阅读下面一次link,

https://docs.oracle.com/javase/specs/jls/se7/html/jls-12.html#jls-12.1.1

调用这行代码:

Manager manager = new Manager();

将创建一个对象Managerclass的一个实例。 Manager class 的实现借鉴了 EmployeePerson classes 的实现 - 然而,仅仅因为你继承自那些 class是的,并不意味着它们被视为单独的对象。

您的程序将只为管理器 class 创建一个对象。 Manager class 扩展了 Employee 和 Person 的 properties/behavior,但它将仅为 Manager 创建对象,而不会为其他人创建对象。

根据对象的基本定义 - 它是 class 的一个实例,而 class 只是关于如何创建对象的蓝图。希望这有帮助。