추상클래스 생성자 질문
조회수 287회
추상클래스의 경우 생성이 되지 않아 하위 클래스가 생성하면서 추상클래스의 생성자를 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의 객체를 생성할 때 또한 파라미터값이 없는 생성자가 호출되었는데 어떻게 호출되는지 궁금합니다
원래 상속관계에서 하위클래스를 생성할 때, 상위 클래스가 먼저 생성되기에 생성자가 호출되는 것이 당연하지만 추상클래스는 생성이 되지 않는부분과 겹쳐 이해가 가지 않습니다
댓글 입력