1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package Extends;
 
class Tv {
    boolean power; // 전원상태(on/off)
    int channel; // 채널
 
    void power() {
        power = !power;
    }
 
    void channelUp() {
        ++channel;
    }
 
    void channelDown() {
        --channel;
    }
}
 
class CaptionTv extends Tv {
    boolean caption; // 캡션상태(on/off)
 
    void displayCaption(String text) {
        if (caption) { // 캡션 상태가 on(true)일 때만 text를 보여 준다.
            System.out.println(text);
        }
    }
}
 
class CaptionTvTest {
    public static void main(String args[]) {
        CaptionTv ctv = new CaptionTv();
        /*ctv라는 참조변수가 CaptionTv라는 인스턴스를 참조한다.*/
        //여기서 CaptionTv는 Tv의 모든 기능을 상속받았다.
        //여기서 말하는 TV의 상속기능은 위에 나온 인스턴스변수이며 메소드또한 마찬가지임
        //자식클래스의 CaptionTvTest에서는 따러 caption 상태만 추가 됨
        //최초 channel은 null상태인데 10이라는 숫자가 들어감
        //이후 channelUp() 메소드를 통해 숫자를 한단계 상승시킴
        //그 숫자를 출력하기 때문에 자연스럽게 11이라는 숫자가 출력
        //자식클래스의 caption에서 boolean을 했기 때문에 true, false만이 되는데
        //최초 아무런 설정을 하지 않은 Hello, World는 생성이 안되고
        //caption을 true시킨 다음 문장만이 실행이 된다.
        //ctv가 참조변수로써 displayCaption을 호출하고 그곳에 Hello, World가 매개변수로 들어가고
        //if문이 true이기에 문장이 출력되는 구조
        
        ctv.channel = 10// 조상클래스로부터 상속받은 멤버
        ctv.channelUp(); // 조상클래스로부터 상속받은 멤버
        System.out.println(ctv.channel);
        ctv.displayCaption("Hello, World");
        ctv.caption = true// 캡션기능을 켠다.
        ctv.displayCaption("Hello, World"); // 캡션을 화면에 보여 준다.
    }
}
cs


+ Recent posts