Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 해외여행
- 개발자
- 취미
- 파티룸
- 가장존경하는인물
- 코딩
- 보드게임점수계산
- 옥길요거트
- 일
- 스컬킹점수계산
- 광명파티룸
- 스컬킹
- MBTI
- 웹개발
- 스페이스우일
- 보드게임점수
- 부천공간대여
- 옥길동파티룸
- 옥길동요거트
- mysql
- 옥길파티룸
- 착한코딩
- 옥길그릭요거트
- 그릭요거트
- 부천파티룸
- 휴식
- 서울파티룸
- 스컬킹점수
- 구로파티룸
- 존경하는위인
Archives
- Today
- Total
SIMPLE & UNIQUE
인터페이스 java 본문
인터페이스
난 동물원의 사육사이다.
육식동물이 들어오면 난 먹이를 던져준다.
호랑이가 오면 사과를 던져준다.
사자가 오면 바나나를 던져준다.Animal.java
public class Animal { String name; public void setName(String name) { this.name = name; } }
Tiger.java
public class Tiger extends Animal { }
Lion.java
public class Lion extends Animal { }
ZooKeeper.java
public class ZooKeeper { public void feed(Tiger tiger) { System.out.println("feed apple"); } public void feed(Lion lion) { System.out.println("feed banana"); } public static void main(String[] args) { ZooKeeper zooKeeper = new ZooKeeper(); Tiger tiger = new Tiger(); Lion lion = new Lion(); zooKeeper.feed(tiger); zooKeeper.feed(lion); } }
출력
feed apple feed banana
인터페이스를 작성Predator.java
public interface Predator { }
Tiger.java
public class Tiger extends Animal implements Predator { }
Lion.java
public class Lion extends Animal implements Predator { }
변경전
public void feed(Tiger tiger) { System.out.println("feed apple"); } public void feed(Lion lion) { System.out.println("feed banana"); }
변경후
public void feed(Predator predator) { System.out.println("feed apple"); }
- tiger - Tiger 클래스의 객체, Predator 인터페이스의 객체
- lion - Lion 클래스의 객체, Predator 인터페이스의 객체
이제 어떤 육식동물이 추가되더라도 ZooKeeper는 feed 메소드를 추가할 필요가 없다. 다만 육식동물이 추가 될 때마다 다음과 같이 Predator 인터페이스를 구현한 클래스를 작성하기만 하면 되는 것이다.
Crocodile.java
public class Crocodile extends Animal implements Predator { }
구현체(Tiger, Lion, Crocodile,...)는 늘어가지만 인터페이스(Predator)는 하나이다.
동물별로 다른 과일를 출력
Predator.java
public interface Predator { public String getFood(); }
getFood 메소드 구현.
Tiger.java
public class Tiger extends Animal implements Predator { public String getFood() { return "apple"; } }
Lion.java
public class Lion extends Animal implements Predator { public String getFood() { return "banana"; } }
public class ZooKeeper { public void feed(Predator predator) { System.out.println("feed "+predator.getFood()); } }
feed 메소드가 "feed apple" 을 출력하던 것에서
"feed "+predator.getFood()
를 출력하도록 변경되었다. predator.getFood()를 호출하면 Predator 인터페이스를 구현한 구현체(Tiger, Lion)의 getFood() 메소드가 호출된다.feed apple feed banana
출처 : https://wikidocs.net/217
'Java & Spring > Guide' 카테고리의 다른 글
ServletResponse (0) | 2017.10.21 |
---|---|
HttpServletRequest (0) | 2017.10.21 |
SSL 인증서 (0) | 2017.08.29 |
static 개념 (0) | 2017.08.23 |
public static void main(String[] args) (0) | 2017.08.23 |
Comments