//소스는 아래와 같습니다.
import java.io.*;
class C1
{
int a = 10;
C1() { a=1; }
}
class C2 extends C1
{
int a = 20;
int b = 30;
void print() {System.out.println(super.a);}
C2() { b=3; }
}
class C3 extends C2
{
int c = 40;
C3() { a=100; c=200;}
void disp() {
super.print();
System.out.println(super.a); // super.a는 왜 100으로 초기화?
System.out.println(a);
}
}
class myCode
{
public static void main (String[] args) throws java.lang.Exception
{
C3 p = new C3();
p.disp();
}
}
-----------------------------------------------------
출력 : 1
100
100
질문 : C3클래스의 생성자에의해 C2로부터 상속받은 C3의 멤버변수 a만 100으로 초기화 되어야할 것 같은데
결과값에서 보여지듯 C2의 멤버변수 a까지 100으로 초기화 되는 이유가 뭔가요? ㅠㅠ
상위클래스들의 생성자들이 호출되는건 알고있지만 C2의 생성자에서는 a를 초기화 시키지 않는걸요...
으아어으어앙