-
아이템 64. 객체는 인터페이스를 사용해 참조하라어디서 많이 본 주제인데?
적합한 인터페이스만 있다면 매개변수 뿐 아니라 반환값, 변수, 필드를 전부 인터페이스 타입으로 선언하라!!!!!!!!
// 좋은 예 - 인터페이스를 타입으로 사용
Set<Son> sonSet = new LinkedHashSet<>();
// 나쁜 예 - 클래스를 타입으로 사용
LinkedHashSet<Son> sonSet = new LinkedHashSet<>(); 인터페이스를 타입으로 사용하는 습관을 길러두면 프로그램이 훨씬 유연해짐
주의할 점
Ex)
구현 타입을 바꾸려 하는 동기?
오해
적합한 인터페이스가 없다면 당연히 클래스로 참조해야 함!1. String, BigInteger가 대표적인 예
2. 클래스 기반으로 작성된 프레임워크가 제공하는 객체들
3.인터페이스에는 없는 특별한 메서드를 제공하는 클래스들
참고 (PriorityQueue)
PriorityQueue<Integer> pq = new PriorityQueue<>((o1, o2) -> o2 - o1);
클래스 타입을 직접 사용하는 경우는 이러한 추가 메서드를 꼭 사용해야 하는 위 3가지 정도의 경우로 최소화 해야함
정리
|
Beta Was this translation helpful? Give feedback.
Answered by
corock
Mar 14, 2023
Replies: 1 comment 4 replies
-
저는 지인들에게 객체지향 프로그래밍을 정복하고 싶다면 4 + 5 = 9 를 통달하면 된다고 전파합니다. 이번 아이템을 읽으면서 그중에서도 4대 특징 중 가장 하이라이트라고 볼 수 있는 다형성의 중요성을 다시 한번 상기해보는 시간이었습니다. |
Beta Was this translation helpful? Give feedback.
4 replies
Answer selected by
JoisFe
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
저는 지인들에게 객체지향 프로그래밍을 정복하고 싶다면 4 + 5 = 9 를 통달하면 된다고 전파합니다.
여기서 4는 4대 특징(concepts)을 말하고, 5는 원칙(principles)인데요.
이번 아이템을 읽으면서 그중에서도 4대 특징 중 가장 하이라이트라고 볼 수 있는 다형성의 중요성을 다시 한번 상기해보는 시간이었습니다.
정리하신 글 잘 읽었습니다~