본문
인터페이스(interface)
# 인터페이스(interface)
- 인터페이스
1) 작업명세서라고도 한다.
2) 다형성을 가능하게 한다.
- 문법
1) 추상 메소드와 상수만이 존재한다. (상수는 private으로 선언하면 안된다.)
2) 인터페이스는 객체는 아니지만, 객체 타입으로만 사용한다. (다형성)
3) 구현은 interface를 상속받은 자식 클래스에서 한다.
4) public class 클래스명 { .. } => public interface 인터페이스명 { } 으로 선언한다. ( New->interface를 눌러 생성하면 알아서 되기는 함 =D )
5) 가독성을 위해 interface를 만들 때 인터페이스명은 맨 앞에 대문자 I(아이)로 작성한다.
6) 상속할 때 extends가 아닌 implements라고 선언하고, 다중상속이 가능하다.
- Example
- 인터페이스 : 구현 클래스 is able to 인터페이스
- 해석 : 구현 클래스는 인터페이스 할 수 있다.
- 예제 : 고래는 헤엄칠 수 있다.
Source 01) Animal.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | package interfaceEx; public class Animal { String group; public Animal() { group = "동물"; } void showMe() { System.out.println(group); } } | cs |
Source 02) flying.java
1 2 3 4 5 | package interfaceEx; public interface flying { // 날 수 있는 void fly(); } | cs |
Source 03) swimable.java
1 2 3 4 5 | package interfaceEx; public interface swimable { // 헤엄칠 수 있는 void swim(); } | cs |
Source 04) Mammal.java
1 2 3 4 5 6 7 | package interfaceEx; public class Mammal extends Animal { public Mammal() { group = "포유류"; } } | cs |
Source 05) Birds.java
1 2 3 4 5 6 7 8 | package interfaceEx; public class Birds extends Animal { public Birds() { group = "조류"; } } | cs |
Source 06) Whale.java
1 2 3 4 5 6 7 8 9 10 11 12 13 | package interfaceEx; public class Whale extends Mammal implements swimable { public Whale() { group = "고래"; } @Override public void swim() { System.out.println(group + " 수영 중. 어프!! 어프!!!"); } } | cs |
Source 07) Bat.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | package interfaceEx; public class Bat extends Birds implements flying { public Bat() { group = "박쥐"; } @Override public void fly() { System.out.println(group + " 날고 있삼.. 슈웅 !! 슈루루룽!!"); } } | cs |
Source 08) Sparrow.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | package interfaceEx; public class Sparrow extends Birds implements flying { public Sparrow() { group = "참새"; } @Override public void fly() { System.out.println(group + " 날고 있삼.. 허우적!! 허우저억!!!!"); } } | cs |
Source 09) Penguin.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | package interfaceEx; public class Penguin extends Birds implements swimable { public Penguin() { group = "펭귄"; } @Override public void swim() { System.out.println(group + " 수영 중. 푸악!!! 푸하아악!!!"); } } | cs |
Source 10) Driver.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | package interfaceEx; public class Driver { public static void main(String[] args) { flying flyer01 = new Bat(); flyer01.fly(); flying flyer02 = new Sparrow(); flyer02.fly(); swimable[] swimmer = new swimable[2]; swimmer[0] = new Whale(); swimmer[1] = new Penguin(); for (swimable animal : swimmer) { animal.swim(); } } } | cs |
Result)
1 2 3 4 | 박쥐 날고 있삼.. 슈웅 !! 슈루루룽!! 참새 날고 있삼.. 허우적!! 허우저억!!!! 고래 수영 중. 어프!! 어프!!! 펭귄 수영 중. 푸악!!! 푸하아악!!! | cs |
- 출처 및 참고자료 : 스프링 입문을 위한 자바객체지향의 원리와 이해(김종민 저)
댓글