Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 생성자가 final이 될 수 없는 이유는 무엇입니까?

<시간/>

메소드를 final로 만들 때마다 재정의할 수 없습니다. 그것. 즉, 하위 클래스에서 상위 클래스의 최종 메서드에 대한 구현을 제공할 수 없습니다.

즉, 메소드를 final로 만드는 목적은 외부(자식 클래스)에서 메소드 수정을 방지하는 것입니다.

상속에서 클래스를 확장할 때마다. 자식 클래스는 생성자를 제외한 슈퍼클래스의 모든 멤버를 상속합니다.

즉, Java에서는 생성자를 상속할 수 없으므로 재정의할 수 없습니다. 생성자.

따라서 생성자 전에 final을 작성하는 것은 의미가 없습니다. 따라서 자바는 생성자 앞에 final 키워드를 허용하지 않습니다.

시도하면 "modifier final not allowed here"라는 컴파일 시간 오류가 생성됩니다.

다음 자바 프로그램에서 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