다중상속

 인터페이스는 상수만 정의할 수 있으므로 조상클래스의 멤버변수와 충돌하는 경우는 극히 드물다

 추상메서드에는 구현내용이  전혀 없으므로 조상클래스의 메서드와 선언부가 일치하는 경우에는 당연히 조상클래스 쪽의 메서드를 상속받으면 되므로 문제되지 않는다.


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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
interface Car{             //Car interface 선언
    //인터페이스의 멤버 변수 선언
    public final static String CARSIZE1 = "Small Type";
    String CARSIZE2 = "Middle Type"//public final static 생략
    
    //추상메소드 선언
    public abstract void size();
    public abstract void price();
    void option(); // public abstract 생략
}
 
interface CarMaker{    //CarMaker interface 선언
    //인터페이스의 멤버 변수 선언
    public final static String KIA = "기아자동차";
    public final static String HYUNDAI = "현대자동차";
    
    //추상메소드 선언
    public abstract void maker();
}
 
//일반 멤버클래스 정의
class CarTransfer {    
    
    public void prideCost() {
        System.out.println("프라이드 운송비 : 5만원");
    }
    
    public void sonataCost(){
        System.out.println("소나타 운송비 : 10만원");
    }
}
//일반 클래스 CarTransfer 상속, 인터페이스 Car, CarMaker 2개 구현
class Pride extends CarTransfer implements Car, CarMaker{
 
    
    //Car 인터페이스의 추상메소드 오버라이딩
    public void size(){
        System.out.println("자동차의 크기 : " + CARSIZE1);
    }
    
    public void price(){
        System.out.println("최고 가격 : 1600만원");
    }
    
    public void option(){
        System.out.println("풀옵션 가격 : 200만원");        
    }
    
    //CarMaker Interface의 추상메서드 오버라이딩
    public void maker(){
        System.out.println("제조사 : " + KIA + "\n");
    }
    
    //자체 메소드 정의
    public void discount(){        
        System.out.println("구형 교체 : 50만원 할인");
    }
}
//일반 클래스 CarTransfer 상속,  인터페이스 Car, CarMaker 2개 구현
class Sonata extends CarTransfer implements Car, CarMaker{
    //Car 인터페이스의 추상 메소드 오버라이딩
    public void size(){
        System.out.println("자동차 크기 : " + CARSIZE2);
    }
    
    public void price(){
        System.out.println("최고 가격 : 3000만원");
    }
    
    public void option(){
        System.out.println("풀옵션 가격 : 350만원");        
    }
    
    //CarMaker Interface의 추상메서드 오버라이딩
    public void maker(){
        System.out.println("제조사 : " + HYUNDAI + "\n");
    }
    
    //자체 메소드 정의
    public void discount(){        
        System.out.println("구형 교체 : 100만원 할인");
    }
}
 
public class CarInfo { 
    public static void main(String[] args) {
        Pride pr = new Pride();
        Sonata so = new Sonata();
        
        pr.size();
        pr.price();
        pr.option();
        pr.discount();
        pr.prideCost();
        pr.maker();
        
        so.size();
        so.price();
        so.option();
        so.discount();
        so.sonataCost();
        so.maker();
    }
}








실선은 종속 점선은 구현 빗금은 추상메소드

인터페이스의 CARSIZE1~2는 상수


'Study > JAVA' 카테고리의 다른 글

java FILO(1)  (0) 2014.10.13
Scanner 함수를 이용한 대소문자 변환 소스  (0) 2014.10.13
추상클래스 abstract  (0) 2014.10.10
다형성 (1)  (0) 2014.10.10
생성자와 super, this  (0) 2014.10.02
Posted by 차희빈

차희빈

달력