Java 생성자 상속: 왜 안 될까요?
다른 객체 지향 언어와 달리 Java는 생성자를 상속하지 않습니다. 서브클래스가 슈퍼클래스에서 상속받을 때 슈퍼클래스의 생성자를 자동으로 획득하지 않습니다. 대신 하위 클래스는 super 키워드를 사용하여 적절한 슈퍼클래스 생성자를 호출하는 자체 생성자를 명시적으로 정의해야 합니다.
Java에서 생성자 상속이 없는 이유는 무엇입니까?
이 디자인 선택은 생성자의 캡슐화를 유지하는 것입니다. 생성자가 상속된 경우 Object 클래스의 상속으로 인해 모든 클래스는 결국 매개 변수가 없는 생성자를 갖게 됩니다. 이로 인해 모호함과 잠재적인 보안 문제가 발생할 수 있습니다.
예를 들어 FileInputStream에 매개 변수가 없는 생성자가 있는 경우 다음 코드는 문제가 될 수 있습니다.
FileInputStream stream = new FileInputStream();
스트림이 열리는 파일은 무엇입니까? ? 서브클래스가 필요한 매개변수를 지정하는 자체 생성자를 명시적으로 정의하도록 요구함으로써 이러한 모호함이 제거됩니다.
명시적 생성자의 이점
이 디자인 결정은 또한 다음과 같은 여러 가지 이점을 제공합니다.
위 내용은 Java 생성자 상속: Java가 생성자를 상속하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!