Java程式使用建構函式分配和初始化超類成員


在Java中,super指的是父類,為了將一個類繼承到另一個類,我們使用extends關鍵字。在建立Java程式使用建構函式分配和初始化超類成員之前,讓我們先了解一下本文中將使用的一些概念。

什麼是建構函式?

  • 建構函式與方法非常相似,但區別在於方法定義了物件的行為,而建構函式用於初始化這些物件。

  • 我們可以為方法提供任何我們選擇的名稱,但建構函式必須與類名相同。

  • 此外,方法可以返回值,但建構函式不返回值,因為它們不能有任何返回型別。

當用戶不建立任何建構函式時,Java編譯器會自動建立一個(我們稱之為預設建構函式)。

語法

public class Constructor_example {
   Constructor_example() { 
      // constructor 
      // code to be executed
   }
}

示例

public class Cnst {
   Cnst(){ 
      // constructor 
      System.out.println("I am constructor");
   }
   public static void main(String[] args) {
      Cnst obj = new Cnst();  
      // calling the Constructor
   }
}

輸出

I am constructor

this和super關鍵字

  • this關鍵字用於區分同一類方法的區域性變數和例項變數,但super關鍵字用於區分超類成員和子類成員。

  • this關鍵字用於呼叫當前類的方法、建構函式和變數,但super關鍵字用於呼叫基類的方法和建構函式。

示例1

以下示例說明了this關鍵字的使用。

public class Main {
   String name = "Your name";
   Main(String name) { 
   // Constructor
      this.name = name; 
      // Represents the variable of constructor Main
      System.out.println(name);
   }
   public static void main(String[] args) {
      Main obj = new Main("Tutorialspoint");  
   }
}

輸出

Tutorialspoint

在上面的程式碼中,我們建立了一個引數化建構函式“Main”,以及一個字串型別的引數“name”。因此,在呼叫建構函式時,我們使用了引數“Tutorialspoint”。

示例2

以下示例說明了super關鍵字的使用。

class Tutorialspoint {
    String name="Your name";
}
public class Tutorix extends Tutorialspoint {
    String name = "My name";
    public void show() {
	   // To access name variable of class Tutorialspoint
        System.out.println("Accessing base class name: " + super.name);
	   // To access local variable of class Tutorix
        System.out.println("Accessing child class name: " + name);
    }
     public static void main(String[] args) {
       Tutorix obj = new Tutorix(); 
       obj.show();
    }
}    

輸出

Accessing base class name: Your name
Accessing child class name: My name

在上面的程式碼中,類“Tutorix”繼承了“Tutorialspoint”類。“Tutorix”子類的“show()”方法嘗試使用super關鍵字訪問其父類“Tutorialspoint”的“name”變數。在主方法中,我們使用new關鍵字建立了“Tutorix”類的物件。我們使用該物件呼叫了show()方法。

使用建構函式分配和初始化超類成員

示例

class P {  
   String item_name;
   int rate;
   int quantity;
   P(String item_name, int rate, int quantity) { // Constructor of parent class
      this.item_name = item_name;
      this.rate = rate;
      this.quantity = quantity;
      System.out.println("I am super class constructor");
      System.out.println("I contain " + item_name + " " + rate + " " + quantity);
   }
}
public class C extends P { 
// Inheriting the parent class using extends keyword
   C(String status) {  
      // Constructor of child class        
      super("Milk", 60, 2); 
      // allocating values to parent class members
      System.out.println("I am sub class constructor ");
      System.out.println(status);
   }
   public static void main(String[] args) {
      C obj = new C("paid"); // calling the Child class constructor
   }
}

輸出

I am super class constructor
I contain Milk 60 2
I am sub class constructor 
paid

在上面的程式碼中,我們建立了一個父類“P”,它包含三個變數和一個包含三個引數的建構函式。“C”是“P”的子類。在“C”中,我們使用了super關鍵字為父類“P”分配值。

結論

在本文中,我們瞭解了建構函式與普通方法的不同之處,以及this和super關鍵字的使用。最後,我們建立了一個Java程式,該程式使用建構函式分配和初始化超類成員。

更新於: 2023年4月25日

316 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.