在java中,每次调用构造函数时都会创建对象吗?

在java中,每次调用构造函数时都会创建对象吗?,java,inheritance,constructor,Java,Inheritance,Constructor,在java中,每次调用构造函数时都会创建对象吗? 这里苹果类继承自水果。苹果对象被创建。当它继承自水果时,水果的构造函数被称为(构造函数链接)。这意味着水果的对象已经初始化 但输出表明只创建了一个对象,即Apple对象。这两个对象都有相同的哈希代码 有人能解释一下吗?我希望有两个对象。第一个水果对象应该初始化,然后是苹果对象 //一个Java程序来演示这两个超类 //子类构造函数引用同一个对象 // super class class Fruit { public Fruit()

在java中,每次调用构造函数时都会创建对象吗? 这里苹果类继承自水果。苹果对象被创建。当它继承自水果时,水果的构造函数被称为(构造函数链接)。这意味着水果的对象已经初始化

但输出表明只创建了一个对象,即Apple对象。这两个对象都有相同的哈希代码

有人能解释一下吗?我希望有两个对象。第一个水果对象应该初始化,然后是苹果对象

//一个Java程序来演示这两个超类 //子类构造函数引用同一个对象

// super class
class Fruit
{
    public Fruit()
    {
        System.out.println("Super class constructor");
        System.out.println("Super class object hashcode :" +
                           this.hashCode());
        System.out.println(this.getClass().getName());
    }
}

// sub class
class Apple extends Fruit
{
    public Apple()
    {
        System.out.println("Subclass constructor invoked");
        System.out.println("Sub class object hashcode :" +
                           this.hashCode());
        System.out.println(this.hashCode() + "   " +
                           super.hashCode());

        System.out.println(this.getClass().getName() + "  " +
                           super.getClass().getName());
    }
}

// driver class
public class Test
{
    public static void main(String[] args)
    {
        Apple myApple = new Apple();
    }
}

Output
Super class constructor
Super class object hashcode :366712642
Apple
Subclass constructor invoked
Sub class object hashcode :366712642
366712642 366712642
Apple Apple

构造函数调用不会创建新对象,而是初始化新创建的对象

使用
new Apple()
创建
Apple
对象时,将创建单个对象。该对象属性的初始化涉及执行多个构造函数(
Apple
Fruit
object
)。

对象的构造函数用于指定对象创建时所需的任何细节,如设置一些变量

使用new Apple()的那一刻就是创建对象并初始化构造函数中的代码的地方。

可能重复的