상속 (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()르 ㄹ이용한 객체 생성의 결과를 볼 수 잇다. */
반응형
'lang > java' 카테고리의 다른 글
java 다형성(Polymorphism) (0) | 2007.06.20 |
---|---|
java final 키워드 (0) | 2007.06.20 |
java 추상클래스(Abstract class) (0) | 2007.06.20 |
java 오버라이딩(Overriding)과 오버로딩(Overloading) (0) | 2007.06.20 |
java - 신입 사원이 알아야 할 기본 지식 (1) | 2007.02.01 |