본문 바로가기

game dev/C#

다형성

 

상속한 메서드를 불러일으킬 때 그림1과 같이 나타난다 그럴경우, 그림 2로 대처하면 된다.

그림 1
그림2

 

그러나 이 부분의 문제는 파라미터를 player로 받아서 호출하는경우 Mage, Knight처럼 인자가 다르더라도 그림3처럼 player이동으로 나온다는 것. 이 부분은 그림4의 오버라이딩으로 해결가능하다.

 

그림3

 

     * 다형성(Polymorphism) :다형성은 한 가지 인터페이스나 기능을 여러 형태로 구현할 수 있는 특성
     * 오버로딩 : 함수 이름의 재사용. 매개변수의 타입, 개수, 순서 등을 다르게 하여 여러 개 정의할 수 있는 기능
     * 오버라이딩 : 부모 클래스에서 이미 정의된 메서드를 자식 클래스에서 같은 이름으로 다시 정의하여 사용하는 것

그림 4

 

그림4와 같이 조치해줬다면, 전과 동일하게 실행해도 타입별 각 오버라이딩된 메소드가 호출되는 것을 볼 수 있다.

 

그림 5

 

 

* 추가문법

sealed : Knight를 상속하는 자식 class도 Move()를 오버라이드 할 수 있는데 해당 문법을 사용시 Knight의 자식 클래스는 더 이상 상속해서 쓰지 못하도록 막는다.

base.Move() : 부모 메서드를 실행한다. 

 

그림 6

'game dev > C#' 카테고리의 다른 글

textRPG2  (0) 2023.12.30
문자열  (0) 2023.12.30
class 형변환  (0) 2023.12.29
은닉성  (0) 2023.12.29
상속성  (0) 2023.12.29