📜  继承类的Java对象创建

📅  最后修改于: 2022-05-13 01:54:42.115000             🧑  作者: Mango

继承类的Java对象创建

在Java中,作为一种面向对象的语言,类中的对象是在构造函数的帮助下创建的。当谈到Java中的继承时,我们基本上是在处理从另一个类派生一个类。现在让我们更深入地理解继承,所以当一个特定的类继承一个类时,我们确实有一个关键字,我们使用它来通过 super 关键字引用父构造函数。

它用作后缀,后跟“。”类中的构造函数/s 中的运算符。父类(超类)的这个属性也早在子类(子类)继承和使用它们之前就被启动了。

我们已经在上面看到,当我们创建一个子类的对象时,会调用同一个类的构造函数,如果没有创建则调用默认构造函数,而我们调用超类的构造函数而不通过关键字在子类中创建类的对象。

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

例子:

Java
// Java program to demonstrate that Both Super Class
// and Subclass Constructors Refer to Same Object
 
// Importing required classes
import java.util.*;
 
// Class 1
// Super Class
class Fruit {
 
    // Method inside super class
    public Fruit() {
 
        // Print statement
        System.out.println("Super class constructor");
 
        // Displaying object hashcode of super class
        System.out.println("Super class object hashcode :" +
                           this.hashCode());
 
        System.out.println(this.getClass().getName());
    }
}
 
// Class 2
// Sub class extending above super class
class Apple extends Fruit {
 
    // Method inside sub class
    public Apple() {
 
        // Print statement
        System.out.println("Subclass constructor invoked");
 
        // Displaying object hashcode of sub class
        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());
    }
}
 
// Class 3
// Main class
public class GFG {
 
    // Main driver method
    public static void main(String[] args) {
 
        // Creating an instance of above class
        // inside main() method
        Apple myApple = new Apple();
    }
}


输出
Super class constructor
Super class object hashcode :1149319664
Apple
Subclass constructor invoked
Sub class object hashcode :1149319664
1149319664 1149319664
Apple Apple

输出说明:我们可以看到超类(水果)对象哈希码和子类(苹果)对象哈希码相同,因此只创建了一个对象。这个对象属于 Apple(子类)类,因为当我们尝试打印创建对象的类的名称时,它正在打印 Apple,它是一个子类。