📚 Study/Java

JAVA :: Test111_상속(Inheritance)

bono-hye 2023. 9. 13. 23:29
// 부모 클래스 == 상위 클래스 == 슈퍼(super) 클래스 == 물려주는 클래스 == 상속하는 클래스
class SuperTest111
{
	protected double area;		// protected가 나오면 상속을 위해 만들어졌구나~ 생각
    
    // 생성자
    SuperTest111()
    {
    	System.out.println("Super Class...");
    }
    void write(String title)
    {
    	System.out.println(title + " - " + area);
    }
}

// 자식 클래스 == 하위 클래스 == 서브(sub) 클래스 == 물려받는 클래스 == 상속받는 클래스
public class Test111 extends SuperTest111
{
	/*
    protected double area;
    
    // check~!!!
    // ※ 생성자는 상속 대상에서 제외된다.
    
    void write(String title)
    {
    	System.out.println(title + " - " + area);
    }
    */
    
    // 컴파일 과정에서 자동으로 삽입되는 default 생성자
    /*
    Test111()
    {
    	// ※ 생성자 내부에서 또 다른 생성자 호출
        //	→ 가능하다. 단, 생성자 내부에서 가장 먼저 실행되어야 한다.
        
        // 텅 비어있다~!!!
        //    ↓ (사실 텅 비어있는게 아님!)
        // 부모 클래스 생성자 호출구문~!!!
        	super();			-- this. 처럼 사용하는 것으로 생각
     }
     */
     
     // 사용자 정의 생성자
     Test111()
     {
     	//super();	//-- 컴파일 하는 과정에서 자동으로 삽입~!!!
        // => superTest111()
        
        System.out.println("Sub class...")
        
        // super();	//-- (Ⅹ) 뒤에 붙으면 오류난다! 왜? 생성자에서 또 다른 생성자 호출하려면 가장 먼저 해야지 오류가 나지 않는다.
     }
     
     public void actionCircle()
     {
     	int r = 10;
        area = r * r * 3.141592;
        write("원");
     }
     
     public void actionRect()
     {
     	int w=20, h=5;
        area = w * h;
        write("사각형");
     }
     
     public static void main(String[] args)
     {
     	// Test111 클래스(자식) 기반 인스턴스 생성
        Test111 ob = new Test111();
        //--==>> Super Class...
        //		 Sub Class...
        
        ob.actionCircle()
        //--==>> 원 - 3.141592
        
        ob.actionRect();
        //--==>> 사각형 - 100.0
     }    
}