programing tip

슈퍼 클래스 생성자를 언제 명시 적으로 호출해야합니까?

itbloger 2020. 8. 27. 07:27
반응형

슈퍼 클래스 생성자를 언제 명시 적으로 호출해야합니까?


그래서 슈퍼 클래스를 확장하는 서브 클래스가 있다고 가정 해 보겠습니다. super()슈퍼 클래스 생성자를 실행 하려면 어떤 시나리오에서 명시 적으로 입력해야 합니까?

추상 클래스에 대한 책의 예제를보고 있는데, 추상 클래스가 아닌 하위 클래스로 확장 할 때 하위 클래스의 기본 생성자는 비어 있고 수퍼 클래스의 기본 생성자가 호출된다는 주석이 있습니다. 동시에 누군가의 문제가 명시 적으로 호출하지 않은 경우도 여기에서 보았습니다 super().

서브 클래스의 기본 / 기본이 아닌 생성자에서 슈퍼 클래스의 기본 / 기본이 아닌 생성자를 호출하는 것과 구별이됩니까?


당신 은 단지 필요 하지 않습니다

super();

다른 것을 지정하지 않으면 그것이있을 것입니다. 당신은 단지 경우 호출 할 생성자를 지정해야합니다 :

  • 매개 변수가있는 슈퍼 클래스 생성자를 호출하려고합니다.
  • 수퍼 클래스 생성자 대신 동일한 클래스의 다른 생성자에 연결하려고합니다.

귀하는 다음과 같이 주장합니다.

동시에 누군가의 문제가 명시 적으로 super ()를 호출하지 않은 경우도 여기에서 보았습니다.

예를 들어 주실 수 있나요? 그게 어떻게 가능한지 상상이 안 돼 ...


슈퍼 생성자를 명시 적으로 호출하지 않으면 인수 less 생성자 (super ())가 호출됩니다. 즉, 슈퍼 클래스의 인수없는 생성자가없는 경우 특정 생성자를 직접 호출해야합니다.

그러나 종종 기본 생성자를 사용할 수 있더라도 어쨌든 다른 생성자를 원합니다-코드에 따라 다릅니다.

또한 생성자가 선언되지 않은 경우 컴파일러는 공용 기본 생성자를 자동으로 생성하지만 사용자가 직접 생성자를 작성하자마자 더 이상 발생하지 않습니다.


super()메서드는 코드에 명시 적으로 작성되지 않은 경우에도 항상 하위 클래스의 생성자에서 호출됩니다.

작성해야하는 유일한 시간은 super(...)다른 초기화 매개 변수를 가진 수퍼 클래스에 여러 메소드 가있는 경우 입니다.

참고 URL : https://stackoverflow.com/questions/6318628/when-do-you-need-to-explicitly-call-a-superclass-constructor

반응형