package p3;
public class Main_super {
public static void main(String[] args) {
// AAA a = new AAA();
BBB b = new BBB(); // --> AAA의 생성자, BBB의 생성자아아ㅏ아 두개다 호출됨!
// b.v2 ----> BBB의 변수임!!!.... 이렇게하지마세요~!~!
b.test1(); // --> 이것은 AAA의 메서드10
b.test2(); // --> 이것은 BBB의 메서드20
System.out.println(b.v2); // 20
}
}
class AAA{
int v1;
int v2;
AAA (){
System.out.println("AAA의 기본 생성자");
}
AAA(int v1){
this.v1 =v1;
System.out.println("AAA의 int가 받는 생성자");
}
void test1() {
this.v2 = 10;
// 원래는 v2 = 10; 만 하는거 알지? 지금만 이렇게 쓰는거.(확인용)
System.out.println("이것은 AAA의 메서드" + this.v2);
}
}
class BBB extends AAA{
int v2; // 슈퍼 클래스의 변수명과 똑같이 지을 수는 있따.....
int v3;
BBB (){
super(10); // AAA생성자 int에 10을 넣겠다
System.out.println("BBB의 생성자아아ㅏ아");
}
void test2() {
super.v2 = 30;
// super : 부모클래스의 주소값. 지금은 AAA의 v2에 30을 넣음
// --> 의도하지 않은 이상, 안쓴다!
this.v2 = 20;
System.out.println("이것은 BBB의 메서드" + this.v2);
}
}