추상클래스 생성자 질문

조회수 65회

추상클래스의 경우 생성이 되지 않아 하위 클래스가 생성하면서 추상클래스의 생성자를 super 메서드를 이용하여 호출한다고 알고 있습니다.

public class MainClass {
    public static void main(String[] args) {
        AbstractClassEx ex= new ClassEx(10,"Java");
        System.out.println();

        ClassEx ex2= new ClassEx();
        System.out.println();

        AbstractClassEx ex3= new ClassEx();
        System.out.println();

        ex.fun1();
        ex.fun2();
        System.out.println();
        ex2.fun1();
        ex2.fun2();
    }
}
public class ClassEx extends AbstractClassEx{
    public ClassEx() {
        // TODO Auto-generated constructor stub
        System.out.println("ClassEx Constructor");
    }
    public ClassEx(int i,String s) {
        super(i,s);
        System.out.println("ClassEx constructor override");
        //System.out.println("i:"+i);
        //System.out.println("s:"+s);
    }
    @Override
    public void fun2() {
        // TODO Auto-generated method stub
        System.out.println("fun2() start");
    }


}
public abstract class AbstractClassEx {
    int num;
    String str;
    public AbstractClassEx() {
        // TODO Auto-generated constructor stub
        System.out.println("AbstractClass constructor");
    }
    public AbstractClassEx(int i, String s) {
        System.out.println("AbstractClass constructor override");
        this.num=i;
        this.str=s;
        System.out.println("i:"+i);
        System.out.println("num:"+this.num);
    }
    public void fun1() {
        System.out.println("fun1() start:"+num+" "+str);
    }
    public abstract void fun2();

}

그런데 싱행해보니 메인함수에서 ex2와 ex3의 객체를 생성할 때 또한 파라미터값이 없는 생성자가 호출되었는데 어떻게 호출되는지 궁금합니다

원래 상속관계에서 하위클래스를 생성할 때, 상위 클래스가 먼저 생성되기에 생성자가 호출되는 것이 당연하지만 추상클래스는 생성이 되지 않는부분과 겹쳐 이해가 가지 않습니다

1 답변

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.