이번에는 상속과 인터페이스를 같이 사용한 경우를 알아보자.
간단히, 자료구조의 하나인 큐 를 구현한 예제이다.
Shelf 클래스
package bookshelf;
import java.util.ArrayList;
public class Shelf {
protected ArrayList<String> shelf;
public Shelf() {
shelf = new ArrayList<String>();
}
public ArrayList<String> getShelf() {
return shelf;
}
public int getCount() {
return shelf.size();
}
}
- 객체가 생성될 때 배열객체를 생성 해 shelf 에 저장한다.
Queue 인터페이스
package bookshelf;
public interface Queue {
void enQueue(String title);
String deQueue();
int getSize();
}
- 인터페이스이므로 구현부가 없다. -> default 메서드는 생성가능.
BookShelf (인터페이스와 상속을 모두 구현)
package bookshelf;
public class BookShelf extends Shelf implements Queue {
@Override
public void enQueue(String title) {
shelf.add(title);
}
@Override
public String deQueue() {
return shelf.remove(0);
}
@Override
public int getSize() {
return getCount();
}
}
- 우선 인터페이스를 상속받았기에 Queue 에 있는 메서드들을 모두 구현했다.
- Shelf 의 변수와 메서드를 사용할 수 있다.
테스트
package bookshelf;
public class BookShelfTest {
public static void main(String[] args) {
Queue shelfQueue = new BookShelf();
shelfQueue.enQueue("태백산맥 1");
shelfQueue.enQueue("태백산맥 2");
shelfQueue.enQueue("태백산맥 3");
System.out.println(shelfQueue.deQueue());
System.out.println(shelfQueue.deQueue());
System.out.println(shelfQueue.deQueue());
}
}
- 순서대로 태백산맥 1, 2, 3 을 배열에 넣고, 넣은 순서대로 하나씩 제거한다.
출처: do it 자바프로그래밍
'프로그래밍 > Java' 카테고리의 다른 글
String 클래스 (0) | 2019.12.10 |
---|---|
기본클래스 - Object (0) | 2019.12.09 |
인터페이스 - 디폴트메서드, 정적메서드 (0) | 2019.12.08 |
jdk환경변수 설정하기 (feat. window10) (0) | 2019.12.08 |
인터페이스와 다형성. (0) | 2019.12.07 |