묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 고급편
공통 코드를 추상 클래스로 올리라는 것의 해석
첫 번째 질문은 '섹션 4'에 '데코레이터 패턴 - 예제 코드3' 편에서 김영한님이 private Component component; TimeDecorator(Component component) { this.component = component; }를 드래그하며 MessageDecorator에서와의 중복 코드이기 때문에 추상 클래스를 만들어서 올릴 수 있다고 하셨는데 추상 클래스를 아래와 같이 만들어주고@Getter @Setter public abstract class AbstractDecorator implements Component { private Component component; AbstractDecorator(Component component) { this.component = component; } } MessageDecorator를 이렇게 수정해주면 되는걸까요?@Slf4j public class MessageDecorator extends AbstractDecorator{ public MessageDecorator(Component component) { super(component); } @Override public String operation() { log.info("MessageDecorator 실행"); String result = super.getComponent().operation(); String decoResult = "**" + result + "**"; log.info("MessageDecorator 꾸미기 적용 전={}, 적용 후={}",result, decoResult); return decoResult; } } 두 번째 질문은 추상클래스를 사용한다면 인터페이스의 장점을 활용하지 못할 것 같은데 이걸 의도하신 게 맞는지 궁금합니다. 감사합니다. 강의 잘 듣고 있습니다.
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
추상클래스 (abstract class)와 인터페이스(interface)의 최적의 쓰임?
안녕하세요 나도코딩 선생님...ㅎ몇 주전에 나도코딩 자바편 강의를 완강하고 다시 2회차로 강의를 듣는 중입니다...ㅎ추상 클래스 (abstract class)와 인터페이스(interface) 관련 강의를 들으면서 각각의 특징들 및 차이점들에 대해서 다시 조금씩 알아가고 있는데... (예를 들면, 추상클래스는 abstract 키워드를 가지고, abstract메소드를 가지고 있어서 객체를 생성할 수 없는 반면, 인터페이스(interface)는 보통 -able 키워드, 변수 X, 생성자 X, 오로지 메소드만 있다 등)이 둘, 그러니까 추상 클래스 (abstract class)와 인터페이스(interface)는 '어느 때 (또는 어느 시점)'에 활용하는게 가장 적절한지 디테일하게 알 수 없을까요?항상 좋은 강의와 답변 감사합니다...ㅎ
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
추상클래스, 인터페이스에 대해 질문이 있습니다!
제가 정리한 내용은 추상클래스는 new 클래스를 통해 직접 객체를 생성할 수 없으며, 상속을 위한 클래스이고인터페이스는 구현체에 대한 메소드를 오버라이드 하는 것으로 이해하였는데.. 첫번째 질문은 두 개의 역할이 중복되는 것이 아닌지에 대한 질문입니다. 두 개의 역할 모두 구현체에게 메소드를 주입하는 것인데 굳이 구분한 것인지에 대한 질문입니다.두번째 질문은 일반 클래스의 상속이 있는데 굳이 추상클래스를 사용 하는 점 입니다. 제 생각으로는 부모 객체의 사용을 막기 위해 추상클래스로 변경을 한 것인지? 아니면 다른 이유가 있는 것인지에 대해서도 궁금합니다.