반응형

[쉽게 배우는 자바 프로그래밍] 

        Chapter 06. 상속

            프로그래밍 문제

 

5. 다음 표를 참고해 Phone, Phone의 자식 클래스 Telephone, Telephone의 자식 클래스 SmartPhone을 작성하고, 테스트 프로그램도 작성하시오.

 

  Phone Telephone SmartPhone
필드 protected String owner private String when private String game
메서드 void talk() void autoAnswering() void playGame()

 

① 각 클래스에 모든 필드를 초기화하는 생성자를 추가한다.

② 각 클래스의 메소드를 구현한다. talk()는 owner가 통화 중, autoAnswering()은 owner가 부재 중이니 when에 전화 요망, playGame()은 owner가 game 게임 중이라는 메세지를 출력한다.

③ Phone, Telephone, Smartphone 객체로 Phone 타입 배열 변수에 대입한다. 그리고 반복문과 조건문으로 실제 타입을 조사한 후 Phone 타입이면 talk(), Telephone 타입이면 autoAnswering(), Smartphone 타입이면 playGame()을 호출한다.

 

 

1
2
3
4
5
6
7
8
9
10
public class PhoneTest {
 
    public static void main(String[] args) {
 
        Phone[] phones = { new Phone("황진이"), new Telephone("길동이""내일"), new Smartphone("민국이""갤러그") };
 
        // 코드 추가
    }
 
}

 

황진이가 통화 중이다.
길동이가 없다. 내일 전화 줄래.
민국이가 갤러그 게임을 하는 중이다.

 


        [ Phone.java ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Phone {
 
    protected String owner;
 
    public Phone() {
 
    }
 
    public Phone(String owner) {
        this.owner = owner;
    }
 
    public void talk() {
        System.out.println(owner + "가 통화중이다.");
    }
 
}

 

 

        [ Telephone.java ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Telephone extends Phone {
 
    private String when;
    
    public Telephone() {
        
    }
    
    public Telephone(String owner, String when) {
        this.owner = owner;
        this.when = when;
    }
    
    public void autoAnswering() {
        System.out.println(owner + "가 없다. " + when + " 전화 줄래.");
    }
 
}

 

 

        [ Smartphone.java ]

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
public class Smartphone extends Telephone {
 
    private String game;
 
    public Smartphone() {
 
    }
 
    public Smartphone(String owner, String game) {
        this.owner = owner;
        this.game = game;
    }
 
    public String getGame() {
        return game;
    }
 
    public void setGame(String game) {
        this.game = game;
    }
 
    public void playGame() {
        System.out.println(owner + "가 " + game + " 게임을 하는 중이다.");
    }
 
}

 

 

        [ PhoneTest.java ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class PhoneTest {
 
    public static void main(String[] args) {
 
        Phone[] phones = { new Phone("황진이"), new Telephone("길동이""내일"), new Smartphone("민국이""갤러그") };
 
        for (Phone phone : phones) {
            
            if (phone instanceof Smartphone) {
                ((Smartphone) phone).playGame();
            } else if (phone instanceof Telephone) {
                ((Telephone) phone).autoAnswering();
            } else if (phone instanceof Phone) {
                ((Phone) phone).talk();
            }
            
        }
 
    }
 
}

 

 

반응형