Java
 Computer >> コンピューター >  >> プログラミング >> Java

コンストラクターがJavaでfinalになれないのはなぜですか?


メソッドを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();
   }
}

コンパイル時エラー

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

Student.java:6: error: modifier final not allowed here
   public final Student(){
                ^
1 error

  1. Javaの最終変数

    最終変数は明示的に一度だけ初期化できます。 finalとして宣言された参照変数を、別のオブジェクトを参照するように再割り当てすることはできません。 ただし、オブジェクト内のデータは変更できます。したがって、オブジェクトの状態は変更できますが、参照は変更できません。 変数を使用する場合、最終修飾子 多くの場合、定数をクラス変数にするためにstaticとともに使用されます。 例 public class Test {    final int value = 10;    // The following are examples of declaring

  2. Javaの最後のキーワード

    finalは、Java要素の非アクセス修飾子です。 final修飾子は、クラス、メソッド、および変数の実装を確定するために使用されます。 最終変数 最終変数は明示的に一度だけ初期化できます。 finalとして宣言された参照変数を、別のオブジェクトを参照するように再割り当てすることはできません。 ただし、オブジェクト内のデータは変更できます。したがって、オブジェクトの状態は変更できますが、参照は変更できません。 変数の場合、定数をクラス変数にするために、最後の修飾子がstaticとともに使用されることがよくあります。 例 public class Test {    fina