슈퍼클래스 컨스트럭터를 명시적으로 호출해야 하는 경우는 언제입니까?
예를 들어 슈퍼클래스를 확장하는 서브클래스가 있다고 합시다.어떤 시나리오에서 명시적으로 입력해야 합니까?super()
슈퍼클래스 컨스트럭터를 가동시킬 수 있을까요?
추상 클래스에 대한 책에서 예를 보고 있는데, 추상 클래스가 아닌 하위 클래스로 확장하면 하위 클래스의 기본 생성자가 비어 있고 슈퍼 클래스의 기본 생성자가 호출된다는 댓글이 있습니다.동시에, 누군가의 문제가 명시적으로 전화하지 않은 사례도 본 적이 있습니다.super()
.
슈퍼클래스의 디폴트/비디폴트 생성자를 서브클래스의 디폴트/비디폴트 생성자에서 호출하는 것과 구별됩니까?
절대 필요없어
super();
다른 것을 지정하지 않으면 그렇게 됩니다.호출할 생성자를 지정하면 다음과 같은 경우에만 됩니다.
- 매개 변수가 있는 슈퍼 클래스 생성자를 호출하려고 합니다.
- 슈퍼 클래스 생성자 대신 같은 클래스의 다른 생성자에 연결하려고 합니다.
고객님의 주장:
동시에 누군가의 문제가 명시적으로 super()라고 부르지 않은 사례도 여기서 볼 수 있었습니다.
예를 들어주시겠습니까?그게 어떻게 가능할지 상상이 안 가
super constructor를 명시적으로 호출하지 않으면 less constructor(super())가 호출됩니다.즉, 슈퍼 클래스의 도달 가능한 인수 없는 생성자가 없는 경우 사용자가 직접 특정 생성자를 호출해야 합니다.
그러나 기본 컨스트럭터를 사용할 수 있더라도 코드에 따라 다른 컨스트럭터가 필요한 경우가 많습니다.
또한 컨스트럭터가 선언되지 않은 경우 컴파일러는 자동으로 퍼블릭 디폴트 컨스트럭터를 생성하지만 사용자가 직접 컨스트럭터를 작성하는 즉시 이러한 일이 발생하지 않습니다.
그super()
method는 코드로 명시적으로 작성되지 않은 경우에도 항상 서브태블릿의 컨스트럭터에서 호출됩니다.
당신이 쓸 필요가 있는 유일한 시간은, 만약 당신이 그것을 쓸 필요가 있다면,super(...)
다른 초기화 파라미터를 가진 슈퍼클래스의 메서드.
언급URL : https://stackoverflow.com/questions/6318628/when-do-you-need-to-explicitly-call-a-superclass-constructor
'programing' 카테고리의 다른 글
Mariadb Docker 컨테이너가 데이터베이스 스키마를 사용한 초기화를 거부함 (0) | 2022.11.07 |
---|---|
PHP: memory_limits > 1024M 설정이 작동하지 않음 (0) | 2022.11.07 |
jQuery - 여러 $(문서)입니다.준비됐어? (0) | 2022.11.07 |
MySQL에서 ONLY_FULL_GROUP_BY만 활성화하는 방법 (0) | 2022.11.07 |
오브젝트의 Javascript reduce() (0) | 2022.10.29 |