Interface의 상속과 구현
아래의 그림과 같이 AImp클래스는 A인터페이스를 구현하고,
B인터페이스는 A인터페이스를 상속받고,
BImp클래스는 B인터페이스를 구현하고,
X클래스는 B인터페이스를 구현했다고 가정하자.
A a = new A(); ==> 불가능 : 인터페이스는 new로 객체생성 못함.
A a =
A a = new AImp(); ==> 가능
A a = new BImp(); ==> 가능
B b = new BImp(); ==> 가능
B b =
* X와BImp클래스는 A와 B인터페이스의 기능을 모두 구현해야 한다.
Interface로 기능제한과 개발의 자유
: 리턴타입을 Interface로 하는 경우 구현 메서드에서는 해당 메서드를 구현한 클래스를 사용하므로 다양한 기능을 사용할 수 있어서 개발이 자류롭고, 리턴받은 쪽에서는 불필요한 기능의 사용을 제한하므로 오사용을 막을수 있다.아래의 그램에서 보면
X클래스는 A, B, C 인터페이스를 구현상 상황이다.
이때,
A a = new X(); ==> A의 메서드만 사용가능
B a = new X(); ==> B의 메서드만 사용가능
C a = new X(); ==> C의 메서드만 사용가능
X a = new X(); ==> X의 메서드 모두 사용가능
* 현업에서는 특별한 경우가 아니고서 리스트의 리턴타입을 Collection 또는 List로 한다.
댓글 없음:
댓글 쓰기