📜  Java继承类的对象创建

📅  最后修改于: 2020-03-22 14:25:19             🧑  作者: Mango

在继承中,子类获取超类属性。需要注意的重要一点是,当创建子类对象时,将不会创建超类对象的单独对象。仅创建具有超类变量的子类对象。
这种情况不同于通常的假设,即构造函数调用意味着将创建该类的对象,因此我们不能盲目地说,每当执行一个类构造函数时,是创建该类的对象。

// Java展示继承类的对象创建
// 父类
class Fruit
{
    public Fruit()
    {
        System.out.println("父类构造函数");
        System.out.println("父类对象的哈希码 :" +
                           this.hashCode());
        System.out.println(this.getClass().getName());
    }
}
// 子类
class Apple extends Fruit
{
    public Apple()
    {
        System.out.println("子类构造函数");
        System.out.println("子类对象的哈希码 :" +
                           this.hashCode());
        System.out.println(this.hashCode() + "   " +
                           super.hashCode());
        System.out.println(this.getClass().getName() + "  " +
                           super.getClass().getName());
    }
}
// 测试代码
public class Test
{
    public static void main(String[] args)
    {
        Apple myApple = new Apple();
    }
}

输出:

父类构造函数
子类对象的哈希码 :366712642
Apple
子类构造函数
子类对象的哈希码 :366712642
366712642   366712642
Apple  Apple

如我们所见,超类(水果)对象哈希码和子类(苹果)对象哈希码相同,因此仅创建了一个对象。该对象属于Apple(子类)类,因为当我们尝试打印创建该对象的类的名称时,它正在打印属于子类的Apple。