當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java super和super()的區別用法及代碼示例


在java中,預先定義‘super’這個詞與父類相關。如果我們需要一氣嗬成的話,那麽java中的super關鍵字是指處理父類對象,而super()則處理父類構造函數。我們將首先討論超級關鍵字的概念,然後討論super()。

概念:超級關鍵字

java中的super關鍵字是一個引用變量,用於引用父類對象。關鍵詞“super” 伴隨著繼承的概念而出現。本質上是這種形式極好的當超類中沒有構造函數時,用於初始化超類變量。另一方麵,它通常用於訪問超類的特定變量。

示例

Java


// Java Program to Illustrate super keyword
// Class 1
// Base class
// Here it is vehicle class
class Vehicle {
    // Attribute
    int maxSpeed = 120;
}
// Class 2
// sub class Car extending vehicle
class Car extends Vehicle {
    int maxSpeed = 180;
    // Method
    void display()
    {
        // Printing maxSpeed of parent class (vehicle) as
        // super keyword refers to parent class
        System.out.println("Maximum Speed: "
                           + super.maxSpeed);
    }
}
// Class 3
// Main class
class GFG {
    // Main driver method
    public static void main(String[] args)
    {
        // Creating an object of child class
        Car small = new Car();
        // Calling out method defined inside child class
        small.display();
    }
}
輸出
Maximum Speed: 120

現在我們已經看到 super 關鍵字指的是父類,這可以從輸出本身看出。現在讓我們詳細討論第二個概念super(),更多的程序員不太了解這個概念,並且在幾乎不知道這一切的情況下不實現相同的概念

概念:super()

super 關鍵字還可以通過在其後添加“()”來訪問父類構造函數,即super()。另請記住,“super()”可以根據情況調用參數和非參數構造函數。

例子:

Java


// Java code to demonstrate super()
// Class 1
// Helper class
// Parent class - Superclass
class Person {
    // Constructor of superclass
    Person()
    {
        // Print statement of this class
        System.out.println("Person class Constructor");
    }
}
// Class 2
// Helper class
// Subclass extending the above  superclass
class Student extends Person {
    Student()
    {
        // Invoking the parent class constructor
        // with the usage of super() word
        super();
        // Print styatement whenever subclass constructor is
        // called
        System.out.println("Student class Constructor");
    }
}
// Class 3
// Main class
class GFG {
    // Main driver method
    public static void main(String[] args)
    {
        // Creating object of subclass
        // inside main() method
        Student s = new Student();
    }
}
輸出:
Person class Constructor
Student class Constructor

最後,在對上述主題有了充分的了解之後,讓我們最終總結出它們之間的差異,並以下麵的表格形式列出:

極好的 super()
Java中的super關鍵字是一個引用變量,用於引用父類對象。 Java中的super()是一個引用變量,用於引用父類構造函數。
super可以用來調用父類的變量和方法。 super()隻能用於調用父類的構造函數。
通過super關鍵字可以隨時調用變量和方法, 對 super() 的調用必須是 Derived(Student) 類構造函數中的第一個語句。
如果沒有使用 super 關鍵字顯式調用超類變量或方法,則不會發生任何事情 如果構造函數未使用 super() 顯式調用超類構造函數,則 Java 編譯器會自動插入對超類的無參構造函數的調用。


相關用法


注:本文由純淨天空篩選整理自SohelRaja大神的英文原創作品 Difference between super and super() in Java with Examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。