在堆上创建对象
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();
将创建一个对象,Manager
class的一个实例。 Manager
class 的实现借鉴了 Employee
和 Person
classes 的实现 - 然而,仅仅因为你继承自那些 class是的,并不意味着它们被视为单独的对象。
您的程序将只为管理器 class 创建一个对象。 Manager class 扩展了 Employee 和 Person 的 properties/behavior,但它将仅为 Manager 创建对象,而不会为其他人创建对象。
根据对象的基本定义 - 它是 class 的一个实例,而 class 只是关于如何创建对象的蓝图。希望这有帮助。
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();
将创建一个对象,Manager
class的一个实例。 Manager
class 的实现借鉴了 Employee
和 Person
classes 的实现 - 然而,仅仅因为你继承自那些 class是的,并不意味着它们被视为单独的对象。
您的程序将只为管理器 class 创建一个对象。 Manager class 扩展了 Employee 和 Person 的 properties/behavior,但它将仅为 Manager 创建对象,而不会为其他人创建对象。
根据对象的基本定义 - 它是 class 的一个实例,而 class 只是关于如何创建对象的蓝图。希望这有帮助。