*인터페이스 상속 개념
1. 아래 그림과 같이, 2개의 인터페이스와 그 안에 각각 메서드를 만든다.
2. 인터페이스는 다중상속이 가능하다.
3. 상속 받아온 인터페이스는 메서드오버라이딩이 필수가 아니다.
4. 그러나 상속 받아온 클래스는 필수이다!
5. 오버라이딩 설정을 하면(alt+shift+s+v)
6. 정상적으로 3개의 메소드가 생성이 된다
7. 상속받은 ISay의 인스턴스를 생성해서 출력한다.
결과
*인터페이스 상속 실습(1)
1. IColor 인터페이스를 만든다.
인터페이스 안에서 대문자로 표시된 RED 멤버변수는 자동으로 이탤릭체로 바뀌는데, 자동으로 상수가 된다는 의미이다.
2. AbsColor메서드를 만들고, 오버라이딩을 한다. 헌데, 오류가 나네?
앞에 IColor 인터페이스에서 분명 2개의 메소드를 강제 설정했는데, 이 메서드에서는 하나밖에 오버라이딩하지 않았다. 그래서 오류가 나는 것이다.
3. class 앞에 "abstract"를 붙인다(추상클래스)
이렇게 해주면 오류가 없어진다. 왜? abstract를 붙여 추상클래스가 됨으로써 오버라이딩을 강제로 지정할 필요가 없어졌기 때문이다. 즉, 부모 인터페이스가 강제로 메서드를 지정했다 해도, 추상클래스는 오버라이딩을 지정하지 않아도 된다.
4. 추상클래스는 일반 메서드 showValue도 만들 수 있다.
(하지만 인터페이스는 추상메서드만 만들 수 있음)
5. AbsColor를 상속받는 클래스를 하나 더 만들어보자. 근데 오류가난다. 왜?
아직 오버라이딩을 하나 지정해주지 못했기 때문이다. 즉, 앞의 추상클래스가 설정해주지 못했던 상태로 회피된 getColor() 추상메서드가, 고스란히 이 SubClass 클래스로 떠넘겨졌다고 보면 된다.
6. getColor 메서드를 오버라이딩 해준다.
남은 하나의 메서드를 오버라이딩 해주면, 끝!
*인터페이스 상속 실습(2) -> 만능리모콘 만들기. 다형성!
TV전용, Radio전용, 그리고 Speaker전용 리모콘, 이렇게 3가지가 있다.
각각의 클래스는 따로 만들어져 있으며(지금 캡쳐를 첨부하진 않았다), 볼륨을 높이고 낮출 수 있는 기능을 가지고 있다.
보통은 위의 그림처럼 tv,radio,speaker 인스턴스를 각각 생성해줘야한다.
instanceof(is-a연산자)를 사용해 부모자식관계가 성립하는지를 알아보았다.
위 그림의 코딩을 한 결과, {tv,radio,speaker} 인스턴스가 가리키는 서브클래스들, 즉 {TV,Radio,Speaker} 클래스는 부모클래스인 IVolume 클래스의 상속을 받고 있다는 것이 확인됐다.
그러므로 정상적인 sysout출력문이 실행된다.
위에서 티비,라디오,스피커의 인스턴스를 따로 생성해야 했던 것과 달리, 45번 라인에서 업캐스팅을 해줌으로써 만능리모콘 remocon인스턴스가 생성되었다. TV조작모드가 끝나면, 아까 사용했던 remocon인스턴스에 라디오의 기능을 덮어쓸 수 있다. 이게 바로 다형성이다!
/(ㅇ_ㅇ)/ 끝~!
'N스크린하이브리드앱과정 > JAVA' 카테고리의 다른 글
[3주][2일][8th] JAVA: 연습문제 (0) | 2013.07.30 |
---|---|
[3주][2일][3~4th] JAVA: 다양한 클래스 라이브러리의 활용 (0) | 2013.07.30 |
[2주][4일][5~7교시] JAVA: 접근지정자 final, 추상클래스와 인터페이스 (0) | 2013.07.25 |
[2주][4일][3~4교시] JAVA: 레퍼런스 형변환 복습, is-a연산자, 업/다운 캐스팅. (0) | 2013.07.25 |
[2주][3일][8교시] JAVA 연습문제(for문)(2) (0) | 2013.07.24 |