ホームページ  >  記事  >  Java  >  Java ではコンストラクターを Final にできないのはなぜですか?

Java ではコンストラクターを Final にできないのはなぜですか?

PHPz
PHPz転載
2023-08-20 19:01:221411ブラウズ

Java ではコンストラクターを Final にできないのはなぜですか?

メソッドを Final として宣言した場合、それをオーバーライドすることはできません。つまり、スーパークラスの最終メソッドの実装をサブクラスに提供することはできません。

つまり、メソッドを Final として宣言する目的は、メソッドが外部 (サブクラス) から変更されるのを防ぐことです。

継承では、クラスを拡張すると、サブクラスはコンストラクターを除くスーパークラスのすべてのメンバーを継承します。

つまり、Java ではコンストラクターを継承できないため、コンストラクターをオーバーライドすることはできません。

したがって、コンストラクターの前に Final を追加することは意味がありません。したがって、Java では、コンストラクターの前に Final キーワードを使用することはできません。

コンストラクターをfinalとして宣言しようとすると、コンパイル時エラーが生成され、「修飾子finalはここでは使用できません」というメッセージが表示されます。

次の Java プログラムでは、Student クラスに、final として宣言されたコンストラクターがあります。

デモ

public class Student {
   public final String name;
   public final int age;
   public final Student() {
      this.name = "Raju";
      this.age = 20;
   }
   public void display() {
      System.out.println("Name of the Student: "+this.name );
      System.out.println("Age of the Student: "+this.age );
   }
   public static void main(String args[]) {
      new Student().display();
   }
}

コンパイル時エラー

コンパイル中に、上記のプログラムは次のエラーを生成します。

えええええ

以上がJava ではコンストラクターを Final にできないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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