ホームページ  >  記事  >  Java  >  Java ではインターフェイスにはコンストラクターがないのに、抽象クラスにはコンストラクターがあるのはなぜですか?

Java ではインターフェイスにはコンストラクターがないのに、抽象クラスにはコンストラクターがあるのはなぜですか?

PHPz
PHPz転載
2023-09-13 18:09:031497ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。