본문 바로가기

JAVA/DAY 15 _ 23.09.06

Super

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);
		
	}
}

'JAVA > DAY 15 _ 23.09.06' 카테고리의 다른 글

TypeCasting  (0) 2023.09.12
Polymorphism  (1) 2023.09.12
Basic  (0) 2023.09.12
Final  (0) 2023.09.12
Interface Basic  (0) 2023.09.12