lang/java

java 상속(Inheritance)

C/H 2007. 6. 20. 03:05

상속 (Inheritance)

class Chile extends Parent{}

//OriginalMouse.java
class OriginalMouse{
    private int buttonNum;

    public void click(){
        System.out.println("CLICK ! ");
    }
}

// MouserTester.java
class MouseTester{
    public static void main(String[] args}{
        OrignalMouse origin = new OriginalMouse();
        origin.click();
    }
}

/** 분석
OriginamMouse에서는 단순히 객체를 생산하기 위해 클래스를 선언하고 마우스가 가진 기본 기능인 click() 메소드를 저으이한다. 실제로 OriginamMouse객체를 생산하는 것은 MouseTester.java에서 생성한다.
*/

//WheelMouse.java
class WheelMosue extends OriginalMouse{ //상속받았다.
    public void scroll(){
        System.out.println("Scroll 기능 추가");
    }
    //     <-- click() 이 없다는 점을 주의한다.
}

// WheelMouse.java 2번쟤
class WheelMouse extends OriginalMouse {
    public WheelMouse(){
        System.out.println("Wheel Mouse 생성자이다.");
    }

   public void scroll(){
        System.out.println("Scroll 기능 추가");
    }
}

// OpticalMouse.java
class OpticalMouse extends WheelMouse{
    private String name;

    public OpticalMouse();
        super();
    }

    public OpticalMouse(String name){
        super();
        this.name = name;
    }

    public void scroll(){
       System.out.println(" 이 스크롤 기능은 재정의된 것입니다.");
    }

    public void useOptical{}{
        System.out.println(name + " 마우스는 옵티컬 마우스입니다.");
    }
}

/** 분석
public OpcitalMouse() 에서 기본 생성자를  만들고 super() 를  상용하고 잇다. super()는 자신의 부모 클래스의 생성자 메소드를 사용하겠다는 의미이다.(실행결과를 보면 WheelMouser의 생성자 메소드가 실행되는것을 볼수 잇다).
public OpticalMouse(String name)의 생성자는 OpticalMouse 객체를 생성할 때 이름을 가질 수 있도록 하는 생성자이다. 그런데 자세히 보면 이름(name)이라는 속성은 단순히 OpticalMouse에만 적용되기 때문에 나머지 super()를 통해 맏기고 잇다.
*/

/** 주의
public void scroll() 메소드는 특별한 주의가 필요하다. OpticalMouse가 WheelMouse를 송속 받고 있기 때문에 scroll() 메소드 역시 WheelMouse에 있는 scroll()메소드를 사용할 수 있지만, OpticalMouse에서 새로 만들어서 사용하고 잇다.
*/

//MouseTester.java
class MouseTester{
    public static vodi main(String[] args){
       OriginalMouse origin = new OriginamMouse();
        origin.click();
        //WheelMouse
        System.out.println("------------------------");
        WheelMouse wheel = new WheelMouse();
        wheel.click();
        wheel.scroll();
        //opticalMouse
        System.out.println("------------------------");
        OpticalMouse optical = new OpticalMouse("광 센서 마우스");
        optical.click();
        optical.scroll();
        optical.useOptical();
    }
}

/** 분석
MouseTest는 세 가지 객체 OriginalMouse와 WheelMouse, OpticalMouse를 생산한다.
세 객체는 자신이 할 수 잇는 메소드가 약간씩 차이가 있기 때문에 상속 관계와 super()르 ㄹ이용한 객체 생성의 결과를 볼 수 잇다.
*/

반응형