다중상속
인터페이스는 상수만 정의할 수 있으므로 조상클래스의 멤버변수와 충돌하는 경우는 극히 드물다
추상메서드에는 구현내용이 전혀 없으므로 조상클래스의 메서드와 선언부가 일치하는 경우에는 당연히 조상클래스 쪽의 메서드를 상속받으면 되므로 문제되지 않는다.
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 |