首頁  >  文章  >  Java  >  為什麼在Java中介面沒有建構函數,而抽象類別有建構子?

為什麼在Java中介面沒有建構函數,而抽象類別有建構子?

PHPz
PHPz轉載
2023-09-13 18:09:031495瀏覽

為什麼在Java中介面沒有建構函數,而抽象類別有建構子?

建構子用於初始化特定類別相對於物件的非靜態成員。

介面中的建構子

  • Java 中的介面沒有建構子,因為介面中的所有資料成員預設都是public static final ,它們是常數(在宣告時賦值)。
  • 介面中沒有資料成員可以透過建構函式初始化它們。
  • 為了呼叫方法,我們需要一個對象,因為接口中的方法沒有主體,所以不需要呼叫介面中的方法。
  • 由於我們無法呼叫介面中的方法,所以不需要為介面建立對象,並且不需要在其中包含建構函式。

範例1

interface Addition {
   int add(int i, int j);
}
public class Test implements Addition {
   public int add(int i, int j) {
      int k = i+j;
      return k;
   }
   public static void main(String args[]) {
      Test t = new Test();
      System.out.println("k value is:" + t.add(10,20));
   }
}

輸出

k value is:30

類別中的建構子

  • 類別建構子的用途是用於初始化字段,但不要建構物件。
  • 當我們嘗試建立抽象超類別的新實例時,編譯器會給出錯誤。
  • 但是,我們可以繼承抽象類別並使用透過設定其變數來控制其建構子。

範例 2

abstract class Employee {
   public String empName;
   abstract double calcSalary();
   Employee(String name) {
      this.empName = name; // Constructor of abstract class  
   }
}
class Manager extends Employee {
   Manager(String name) {
      super(name); // setting the name in the constructor of subclass
   }
   double calcSalary() {
      return 50000;
   }
}
public class Test {
   public static void main(String args[]) {
      Employee e = new Manager("Adithya");
      System.out.println("Manager Name is:" + e.empName);
      System.out.println("Salary is:" + e.calcSalary());
   }
}

輸出

Manager Name is:Adithya
Salary is:50000.0

以上是為什麼在Java中介面沒有建構函數,而抽象類別有建構子?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除