java/코드 리뷰

10. oop3 - (1) PhoneDemo (형변환)

Astaroth아스 2020. 4. 2. 20:08
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package oop3;
/**
 * 1
 * @author HYB
 *
 */
public class Phone {
    
    String tel;
    
    void call() {
        System.out.println("전화를 겁니다.");
    }
    
    void receive() {
        System.out.println("전화를 받습니다.");
    }
    
}
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package oop3;
/**
 * 2
 * @author HYB
 *
 */
public class FeaturePhone extends Phone{
    
    String pixel = "20만 화소";
    
    void sms() {
        System.out.println("sms 메시지를 주고받습니다.");
    }
    
    void photo() {
        System.out.println("사진을 찍습니다.");
    }
    
}
 
 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package oop3;
/**
 * 3
 * @author HYB
 *
 */
public class SmartPhone extends FeaturePhone {
 
    String ip;
    String email;
 
    void mail() {
        System.out.println("메일을 주고 받습니다.");
    }
 
    void internet() {
        System.out.println("인터넷을 합니다.");
 
    }
}
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package oop3;
/**
 * 4
 * @author HYB
 *
 */
public class Galaxy extends SmartPhone{
    
    String googleAccount;
    String googlePassword;
    
    void bixby() {
        System.out.println("하이 빅스비");
    }
    
    void samsungpay() {
        System.out.println("삼성페이로 결제합니다.");
    }
    
}
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package oop3;
/**
 * 5
 * @author HYB
 *
 */
public class Iphone extends SmartPhone {
    
    String userid;
    String password;
    
    void applemusic() {
        System.out.println("애플뮤직을 듣습니다.");
    }
    
    void siri() {
        System.out.println("시리야.");
    }
    
}
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
package oop3;
/**
 * 7
 * @author HYB
 *
 */
public class Iphone8 extends Iphone {
    
    void fingerScan() {
        System.out.println("지문을 인식합니다.");
    }
    
}
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
package oop3;
/**
 * 8
 * @author HYB
 *
 */
public class IphoneX extends Iphone {
 
    void faceScan() {
        System.out.println("얼굴을 인식합니다.");
    }
}
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
package oop3;
/**
 * 9
 * @author HYB
 *
 */
public class Iphone11 extends IphoneX {
    
    void tripleCamera() {
        System.out.println("카메라 3개로 찍기");
    }
}
 
 
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
package oop3;
/**
 * 6
 * @author HYB
 *
 */
public class PhoneDemo {
    public static void main(String[] args) {
        
        // 형변환
        // Iphone 객체는 Iphone 타입의 변수 및 Iphone 조상 타입의 변수에 저장 가능
        Iphone p1 = new Iphone();
        SmartPhone p2 = new SmartPhone();
        FeaturePhone p3 = new FeaturePhone();
        Phone p4 = new Phone();
        
        // Galaxy p5 = new Iphone(); // Iphone 객체는 Galaxy 타입의 변수에 담을 수 없음
        
                                        //    클래스        사용 가능한 참조 변수
        p1.userid = "hong";                // Iphone        p1
        p1.password = "1q2w3e4r";        // Iphone        p1
        p1.applemusic();                // Iphone        p1
        p1.siri();                        // Iphone        p1
        
        p1.ip = "192.168.10.21";        // SmaerPhone    p1 p2
        p1.email = "hong@gmail.com";    // SmaerPhone    p1 p2
        p1.mail();                        // SmaerPhone    p1 p2
        p1.internet();                    // SmaerPhone    p1 p2
        
        p1.pixel = "천만화소";                // FeaturePhone p1 p2 p3
        p1.photo();                        // FeaturePhone p1 p2 p3
        
        p1.tel = "010-1111-1111";        // Phone        p1 p2 p3 p4
        p1.call();                        // Phone        p1 p2 p3 p4
        p1.receive();                    // Phone        p1 p2 p3 p4
        
    }
}
 
 
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
package oop3;
/**
 * 10
 * @author HYB
 *
 */
import java.util.Scanner;
 
public class PhoneDemo2 {
    public static void main(String[] args) {
 
        Scanner sc = new Scanner(System.in);
        
        SmartPhone testPhone = null;
        
        System.out.println("인터넷 기능을 테스트할 폰을 선택하세요.");
        System.out.println("1.스마트폰        2.아이폰        3.갤럭시");
        int no = sc.nextInt();
        
        if (no == 1) {
            System.out.println("스마트폰 객체로 테스트를 진행합니다.");
            testPhone  = new SmartPhone();
        } else if (no == 2) {
            System.out.println("아이폰 객체로 테스트를 진행합니다.");
            testPhone  = new Iphone();
        } else if (no == 3) {
            System.out.println("갤럭시 객체로 테스트를 진행합니다.");
            testPhone  = new Galaxy();
        }
        
        if(testPhone != null) {
            testPhone.internet();
        } else {
            System.out.println("잘못된 번호를 입력하였습니다.");
        }
    
        sc.close();
    }
}
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package oop3;
/**
 * 11
 * @author HYB
 *
 */
public class PhoneDemo3 {
    public static void main(String[] args) {
        
        Phone p = new Iphone8();
        
        System.out.println("Phone --> " + (p instanceof Phone));
        System.out.println("FeaturePhone --> " + (p instanceof FeaturePhone));
        System.out.println("SmartPhone --> " + (p instanceof SmartPhone));
        System.out.println("IPhone --> " + (p instanceof Iphone));
        System.out.println("Galaxy --> " + (p instanceof Galaxy));
        System.out.println("IPhone8 --> " + (p instanceof Iphone8));
        System.out.println("IPhoneX --> " + (p instanceof IphoneX));
        System.out.println("IPhone11 --> " + (p instanceof Iphone11));
        
    }
}