생성자에 super()가 있는 것은 선택 사항인가요?
객체 지향 프로그래밍에서는 파생 클래스에서 생성자를 활용하는 것이 일반적입니다. 슈퍼클래스에서 생성자를 호출합니다. 그러나 일부 개발자는 생성자 내에서 super()를 명시적으로 지정해야 하는 필요성에 의문을 제기합니다.
컴파일러의 super() 자동 호출
Java 컴파일러는 자동으로 하위 클래스 생성자가 슈퍼클래스 생성자를 지정하지 않는 경우 슈퍼클래스의 액세스 가능한 인수 없는 생성자. 이는 대부분의 경우 super() 생략이 프로그램 동작에 영향을 미치지 않는다는 것을 의미합니다.
규칙 예외
그러나 상황이 있습니다. super()의 명시적인 호출이 필요한 경우:
인수가 있는 경우 생성자 사용
하위 클래스 생성자가 있는 경우 인수가 있는 경우, 슈퍼클래스 생성자에 적절한 인수를 전달하는 것은 하위 클래스 생성자의 책임입니다. 컴파일러는 명시적으로 지정하지 않는 한 인수가 있는 슈퍼클래스 생성자를 자동으로 호출하지 않습니다.
예
다음 코드를 고려하세요.
public class Base {
private Base() {}
}
public class Derived extends Base {
public Derived(int i) {
super(); // Call the default no-args constructor of Base
}
}
이 예에서는 Base에 인수가 없는 전용 생성자가 있으므로 Derived 생성자의 super() 호출이 필수적입니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3