• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

다형성으로

20.03.08 14:35 작성 조회수 204

0

부모 클래스(ex:) Monster)로서 자식클래스(ex:) Orc_Mage, Orc_warrior... etc.)를 받아와서(ex:) Monster a = Orc_Mage;)

부모클래스 명령어로 처리하는 방식도 있잖아요? (ex:) a.Attack();)

인터페이스랑 어떻게 사용법을 구별할까요..?

답변 2

·

답변을 작성해보세요.

1

인터페이스와 부모클래스에 의한 상속 둘다, 호출하는 측에서는 사용법을 구별할 필요는 없습니다.

정확히는, 해당 클래스가 인터페이스를 상속했는가, 부모 클래스를 상속했는가를 구별할 필요가 없다는게 정확합니다.

왜냐면, 사용자 입장에서는 인터페이스 또는 특정 부모 클래스를 상속함으로써, 어떤 메서드 등을 분명히 가지고 있다는 확신을 받는게 중요하기 때문입니다.

다만 인터페이스에서 혼란을 느끼는 이유는 이해합니다. :)

상속은 부모-자식 클래스 관계에서 사용하는 것인데, 같은 문법을 인터페이스에서 사용하니까요.

사실, 인터페이스는 가상 메서드만 존재하는 추상클래스와 완전히 같습니다.

인터페이스의 구현과 클래스의 상속 사이의 차이점 중 하나는, 인터페이스는 어떤 미완성의 메서드를 완성할 것을 강제하지만, 클래스는 미완성의 가상 메서드를 만들것을 강제하는 것과 별개로 , 완성된 메서드, 이미 존재하는 필드등을 함께 제공하게 됩니다. 또한 인터페이스는 다중 상속이 가능합니다.

인터페이스를 상속하는 행위는 사실, 인터페이스를 "구현한다"고 표현하는 것이 정확합니다. 어떤 언어들은 인터페이스를 상속하는 것을 상속이라는 단어 대신 명시적으로 "구현"한다고 표현합니다.

어째서 인터페이스는 "구현하는"것이고 클래스는 "상속하는 것"인지 고민해보는 것도 좋을 것 같네요!

0

hwakyeom님의 프로필

hwakyeom

질문자

2020.03.09

한마디로 인터페이스는 명시(?) 뭔가 복잡한 함수 묶음들을 따로 맨 위나 다른 스크립트에 인터페이스로서 구현해둬서

한눈에 확인 할 수 있도록 활용한다는 것이군요!??

지금 이벤트 제네릭 람다까지 C#고급 강좌까지 완강했는데 아무리 생각해봐도 인터페이스나 오버라이드를 쓸 바에는

그냥 추상클래스 하나 쓰는 편이 훨씬 깔끔할 거 같거든요 ;; 

아직 뭔가 실전으로 프로젝트를 따로 만들어서 이것저것 시도해보지는 않아서 모르겠습니다만 ......

상세한 답변 감사합니다!