아이템19 - 구체 클래스가 표준 인터페이스를 구현하지 않았는데 상속을 금지하면 사용하기에 상당히 불편해진다.
안녕하세요 강사님! 이펙티브 자바 강의 재밌게 수강하고 있습니다. 항상 감사드립니다. 책의 내용 중 하나가 도저히 이해가 되지 않아 질문 드립니다!
[아이템19]
"구체 클래스가 표준 인터페이스를 구현하지 않았는데 상속을 금지하면 사용하기에 상당히 불편해진다. 이런 클래스라도 상속을 꼭 허용해야겠다면 합당한 방법이 있다."
에서 "사용하기에 상당히 불편해진다." 가 무얼 뜻하는지 잘 모르겠습니다. 그리고 상속을 금지했는데, 허용한다? 라는 말도 잘 이해가 가지 않습니다!
제가 이해하기로는
1. "구체 클래스가 표준 인터페이스를 구현하지 않았는데 상속을 금지하면 사용하기에 상당히 불편해진다. :
표준 인터페이스를 구현하지 않은 클래스는 내부 동작을 예측하기가 쉽지 않다. 또한 확장이나 변경이 제한적이다. 상속을 금지하게되면 더 제한적이게 된다.
2. "이런 클래스라도 상속을 꼭 허용해야겠다면 합당한 방법이 있다." :
위와 같이 제한적인 불편함이 싫다면 상속을 허용하고 내부메서드에서 자기의 재정의 가능 메서드를 호출하는 코드를 제거하는데, 그 중 하나의 방법이 'private 도우미 메서드' 방법을 사용하라.
라는 뜻일까요?
맞다면 아래와 같은 상황일까요?
1. 이전 릴리스에서는 표준 인터페이스를 구현하지 않고 상속도 금지한 구체클래스였다.
2. 다음 릴리스때 이 구체클래스를 확장해야겠다고 판단했고, 상속을 허용하기로 했다.
Answer 2
1
네 정리하신 내용이 맞습니다. 저도 그렇게 이해했어요. 인터페이스를 구현하지 않았는데, 상속까지 막혀있다면 해당 클래스를 재사용해서 무언가 확장하거나 변경하는게 어려워 지겠죠. OCP (확장에 열려있고, 변경에 닫혀있는 원칙)을 준수하는 이상적인 클래스를 만드는 방법에 대한 설명으로 이해할 수 있습니다.
0
안녕하세요, 인프런 AI 인턴이에요. 강의를 재밌게 수강하고 계셔서 다행입니다. “구체 클래스가 표준 인터페이스를 구현하지 않았는데 상속을 금지하면 사용하기에 상당히 불편해진다”는 문장은 구체 클래스가 특정 인터페이스를 구현하지 않았을 때, 이 클래스를 상속받아 사용하기가 불편해진다는 의미입니다. 구체 클래스가 표준 인터페이스를 구현하지 않았을 경우, 이 클래스를 사용하는 쪽에서는 내부 동작을 예측하기가 어렵고, 확장이나 변경이 제한적일 수 있기 때문에 사용하기가 불편할 수 있습니다.
또한 “이런 클래스라도 상속을 꼭 허용해야겠다면 합당한 방법이 있다”는 문장은 구체 클래스가 표준 인터페이스를 구현하지 않았을 때, 상속을 할 수 없는 경우 사용자가 편리하게 사용할 수 있도록 상속을 허용하는 방법이 있다는 의미입니다. 자세한 내용은 책의 내용을 참고하시면 좋을 것 같습니다. 여기서는 상세한 방법에 대해 설명드리기 어렵습니다.
감사합니다! 더 궁금한 점이 있다면 언제든지 물어보세요.
11강 [실습] Docker로 MySQL1 분만에 실행하기
0
20
2
11강 [실습] Docker로 MySQL1 분만에 실행하기
0
19
2
6분46초
0
25
2
공략법
0
25
1
isInterrupted 질문 있다.
0
18
1
선생님 샤딩에 대한 강의도 좀 해주세요
0
29
1
몽고DB CAP 이론 관련
0
42
2
모의고사 파일과 이론파일 업데이트
0
54
2
이론 pdf 다운은 어디서 하나요?
0
49
2
RunIdIncrementer batch 5랑 6랑
1
43
2
질문있습니다.
0
36
1
15분 35초즈음 나오는 500개 단위로 쪼개는 경우 스레드 질문
0
30
1
강의 자료를 받아볼 순 없겠나
1
56
2
수업이 안보여요
0
53
1
코테의 바이블 수강생 코테올인원 JAVA 쿠폰
0
38
1
버전 관련하여 문의드립니다
0
36
1
기출문제 재탕
0
52
1
뻬먹은 코드
0
38
1
강의 소스 코드 관련 질문 드립니다.
0
66
1
아이템 28 타입 안전
0
451
1
다음 강의 질문
0
467
1
아이템16, 조금 애매한 것 같습니다.
0
623
1
아이템 32. 핵심 정리 12:00 이 부분에서 질문이 있습니다.
1
531
1
아이템31 비한정적와일드카드
1
390
0

