카테고리 없음

[자바] 메인 호출이 너무 많은 클래스?

행복을전해요 2021. 2. 8. 06:00

this()또는에 대한 명시 적 호출로 시작하지 않는 생성자가있는 경우 super()컴파일러는 기본 슈퍼 클래스 생성자에 대한 호출을 자동으로 삽입합니다. 로부터 Java 언어 사양 (§8.8.7) :

생성자 본문이 명시 적 생성자 호출로 시작하지 않고 선언되는 생성자가 기본 클래스 Object의 일부가 아닌 경우 생성자 본문은 다음의 생성자의 호출 인 수퍼 클래스 생성자 호출 "super ();"로 암시 적으로 시작됩니다. 인수를 취하지 않는 직접 수퍼 클래스.

따라서 AbsClass()의 생성자 Extender가 실행 시작할 기본 생성자 가 호출됩니다 .

-------------------

상속 된 클래스가있는 경우 생성자는 항상 모든 조상에 대해 호출됩니다.

당신이 그것을로 지정 해달라고하면 super(parameters), 다음 super()기본적으로 호출된다.

상위에 매개 변수가있는 생성자가 있고 매개 변수가없는 생성자가없고 확장 된 클래스가 호출하려는 생성자를 지정하지 않으면 코드를 컴파일 할 수 없습니다.

예 :

public abstract class AbsClass {
    public AbsClass(String text) {
            System.out.println("AbsClass called: " + text);
                }        
                }
                
                public class Extender extends AbsClass {
                    public Extender() {
                            System.out.println("Extender called");
                                }
                                }
                                

컴파일 할 수 없습니다.

(중요한 것 : 클래스에 생성자가 없으면 매개 변수를 취하지 않는 암묵적으로 자동 생성 된 생성자가 있습니다.)



출처
https://stackoverflow.com/questions/22050283