• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

구현에 관한 질문

23.10.14 22:10 작성 조회수 222

0

DiscountPolicy와 같은 인터페이스들을

fixdiscount, ratediscount 등 클래스가 상속을 받고

main에서 클래스를 사용할때 부모클래스로 구현을 하잔아요

예를 들어 영상에서 코드를 보면

DiscountPolicy discountpolicy = new RateDiscountPolicy

의 형식처럼 구현되는데

만약에 자손 클래스에 새로 메서드를 추가를 했는데

그 메서드를 부모가 가지지 않았다면

그 메서드를 다운캐스팅을 통해 쓰는 건가요??

아니면 메서드를 부모 인터페이스에도 적어주어 오버라이딩으로 활용하는 것이 좋나요?

 

수업에서 계속 다형성을 활용해 진행하기 때문에 이런 궁금점이생겼습니다.

 

 

 

답변 3

·

답변을 작성해보세요.

0

David님의 프로필

David

2023.10.17

안녕하세요. 문지수님, 공식 서포터즈 David입니다.

공통으로 구현되어야 하는 사항이 아니라면 자식 클래스에서 구현하는 것이 맞습니다.

자식 클래스 타입이 아니라 인터페이스를 통해 주입되어야 했다면 자식 클래스로 다운캐스팅하여 사용하시면 됩니다.

감사합니다.

0

덕범님의 프로필

덕범

2023.10.17

안녕하세요


제 생각을 말씀드리면, 상황마다 다를 것 같습니다.


예를 들어 모든 동물을 의미하는 부모 클래스를 상속하고 있는 강아지 자식 클래스에 짖기 메소드를 추가한다고 생각하면, 부모 클래스(동물)에 새로 짖기 메서드를 추가하는 것은 부적절 할 수 있을 것 같습니다.
모든 동물들이 짖는 건 아니기 때문입니다. (다시 말하면 모든 동물 클래스를 상속받고 있는 자식 클래스들이 짖기 메소드가 필요한 건 아니기 때문입니다.)


반대로 구현하고 있는 모든 자식 클래스들이 숨쉬는 동물들이라면, 새로운 숨쉬기 메서드의 경우에는 부모 클래스에 추가하는 게 적절할 수도 있을 것 같습니다.

정리하자면 부모 객체와 자식 객체들의 역할과 상호작용을 고려하여 작성해야 할 것으로 생각됩니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.10.16

안녕하세요, 인프런 AI 인턴이에요. DiscountPolicy 인터페이스를 상속받은 자손 클래스에서 새로운 메서드를 추가한 경우에는 부모 클래스 타입으로 인스턴스를 생성한 뒤 다운캐스팅을 통해 자손 클래스의 메서드를 사용할 수 있습니다.
하지만 이러한 경우에는 해당 메서드를 사용하기 위해 다운캐스팅을 해야하기 때문에 코드가 복잡해질 수 있습니다.
따라서, 메서드를 부모 인터페이스에도 추가하여 오버라이딩으로 활용하는 것이 좋을 수 있습니다.
이렇게 하면 부모 클래스 타입으로 인스턴스를 생성하더라도 자손 클래스에서 추가된 메서드를 사용할 수 있으며, 코드의 가독성도 좋아집니다.
수업에서 다형성을 활용하고 있기 때문에 이러한 방식으로 구현하시면 더 효율적으로 코드를 작성할 수 있을 거예요.
더 궁금한 점이 있다면 언제든지 물어보세요. 좋은 하루 되세요!