서브 객체와 인터페이스의 구현체는 어떤 차이가 있을까??
매우 헷갈려서 정리를 해 본다.
1. 서브 클래스는 슈퍼 클래스의 필드/메서드를 [상속(extends)] 받는 것이다.
그에 반해, 인터페이스 구현체는 인터페이스에서 무언가를 상속 받는 것이 아닌, 인터페이스에서 선언한 메서드를 구현체
에서 정의를 한 것이다.
2. 인터페이스 구현체는 객체 선언 없이 모든 필드/메서드의 사용이 가능하다
.서브 객체는 명시적으로 코드로 객체를 선언을 해줘야 필드/메서드가 사용이 가능하다.
그에 반해, 인터페이스 구현체는 클래스가 인터페이스에만 의존을 하고 있다면, 객체 선언 없이 모든 필드/메서드의 호출이
가능하다.
( 물론, 서브 클래스도 클래스가 부모 클래스에 의존을 하고 있다면 필드/메서드 호출이 가능하다.
그러나, 슈퍼 클래스에만 의존해서는 모~~든 필드/메서드 호출은 불가능하다.
만약 서브 클래스의 필드/메서드를 사용하고 싶다면, Down Casting이 필요하다.)
-> 나는 개인적으로 2번이 굉장히 큰 차이점을 보인다고 본다.
왜냐하면, 서브 클래스의 경우에는 부모 클래스에 어떤 필드/메서드가 있고, 또 자식 클래스에는 어떤 필드/메서드가 있는
지를 고려하여 때에 따라서는 다운 캐스팅을 해야 하고, 부모 클래스의 코드가 변경 시, 자식 클래스에게 영향을 줄 수가 있
다.
그러나 인터페이스 구현체는 상속이 아니라, 인터페이스에서 선언을 한 메서드를 그대로 구현체에서 정의를 하는 것이기
에 [인터페이스와 인터페이스 구현체]는 인터페이스에 선언된 모~~든 메서드와 인터페이스 구현체의 모~든 메서드가 빠
짐없이 1:1로 매칭이 되므로 개발자 입장에서는 생각하기가 편하고, 개발하기도 편한 것 같다.
'CS 잡지식' 카테고리의 다른 글
콜백(Call Back) (0) | 2023.02.21 |
---|---|
Strategy Pattern - Field Injection, Parameter Injection (0) | 2023.02.21 |
템플릿 메서드 패턴의 단점을 극복하자 - Strategy Pattern (0) | 2023.02.20 |
상속(Inheritance)의 단점 ( 템플릿 메서드의 단점 ) (0) | 2023.02.20 |
Util Class - 여러 클래스에서 공통적으로 사용되는 기능!! (0) | 2023.02.20 |