작성
·
159
·
수정됨
1
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오) 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예
[질문 내용]
여기에 질문 내용을 남겨주세요.
안녕하세요. 강의를 듣다가 궁금한 점이 생겼습니다.
인터페이스는 구현 메서드를 가능한 지양해야하므로 default 메서드는 하위 호환 등의 특별한 예외에서 사용해야한다는 말씀에 깊이 공감하고 있습니다.
다만 이런 경우는 어떤 접근 방식이 좋을까요?
프로젝트내 특정 이늄 클래스들 혹은 레코드들에 대해서 공통화된 메서드 처리를 하고 싶을 때 디폴트 메서드가 있는 인터페이스를 상속받아서 공통 기능을 사용하고 있습니다.
이늄과 레코드는 클래스 상속이 안되어서 생긴 편법? 같은 느낌이 드는데요. 이에 대한 정석적인 접근 방식이 있을까요? .. 또한 이늄과 레코드는 상속을 못하게한 객체지향적인? 이유가 있을 것 같은데 혹시 어떻게 이해를 하면 좋을지.. 궁금합니다..!
답변 1
3
안녕하세요. 윤석빈님, 공식 서포터즈 David입니다.
말씀하신 방법을 사용해도 되고, Enum, Record를 반드시 사용해야 한다면, 저는 별도의 처리기(processor)를 만들어서 다룰 것 같습니다. 예) FooEnumProcessor, BarRecordProcessor (처리 목적에 따라 이름은 적절히 부여)
Enum, Record 모두 특수 목적에 의해 제약사항을 지니는 클래스입니다. 이런 목적을 벗어난 사용을 막기 위해 상속을 지원하지 않습니다. 만약 확장이 필요하시다면 Enum, Record가 아닌 일반 클래스로 구현하시면 됩니다.
아래 글도 참고해 주세요:)
https://stackoverflow.com/a/71139995/10709777
https://ryumodrn.tistory.com/97
감사합니다.