C#인터페이스를 쓰면 파생클래스를 중복으로 같는 죽음의 다이아몬드를 피할수 있다는데
그러면 걍 애초에 상속없이 쓰면 되는거 아닌가?? 이게 쓰면 특별히 좋은게 뭐임???
이걸로 커플링을 줄일수 있다는데 활용을 어떻게 해야할지 모르겠어서 질문함
C#인터페이스를 쓰면 파생클래스를 중복으로 같는 죽음의 다이아몬드를 피할수 있다는데
그러면 걍 애초에 상속없이 쓰면 되는거 아닌가?? 이게 쓰면 특별히 좋은게 뭐임???
이걸로 커플링을 줄일수 있다는데 활용을 어떻게 해야할지 모르겠어서 질문함
해당 댓글은 삭제되었습니다.
답변 감사합니다.
윗댓 말처럼 날기() 기능이 필요로 하는 클래스들이 날기() 함수를 갖고 있는 IFly 인터페이스를 상속받았다고 치자. 그럼 얘네는 각기 다른 클래스지만, 동시에 다 IFly이기도 함. 그래서 이런 IFly들만 모아놓고, 반복문으로 모든 IFly 대상으로 날기()를 호출할 수 있음. 이게 뭐가 좋냐면, 이 IFly를 갖고 있는 객체는 그 IFly의 본체가 실은 새인지, 날개 달린 사람인지, 비행기인지, 알 필요가 없음. 그냥 IFly인 것만 알면 날기() 함수는 무조건 호출을 보장 받으니까. 본문에서 커플링을 줄일 수 있다는 게 이런 거임. 다형성으로 구글링하면 더 상세하고 다양한 예제가 나올듯.
번외로 다이아몬드 상속을 피하면서 함수의 재사용성을 꾀한게 9.0에 도입된 default interface method이고, trait의 일부분을 구현한거라고 보면 됨 - dc App