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

PHPz
リリース: 2023-09-13 18:09:03
転載
1554 人が閲覧しました

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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート