[Unity]/[C#]

[C#] 상속(virtual, override, abstract)

극꼼 2021. 6. 26. 16:10
반응형


안녕하세요 극꼼이입니다.

이 포스팅에서는 상속을 배우면서 공부한 virtual, override, abstract에 대해 정리할 생각입니다.

 


virtual, override, abstract는 모두 부모, 자식 함수간의 상속에 쓰이는 키워드입니다. 같은 내용의 코드를 여러 스크립트에서 반복하지 않도록 해줍니다. 

 

1. virtual : 부모(상위) class에서 사용. 자식함수에서 재정의 가능하게 가상함수로 만들어 줌(본문 정의 가능). 접근 한정자는 public, internal, protected를 사용해야 함.

 

2. override : 자식(하위) class에서 사용. virtual함수를 재정의해줌

 

3. abstract : 부모(상위) class에서 사용(반드시 abstract 클래스여야 함). 자식함수에서 재정의 가능하게 추상함수로 만들어 줌(본문 정의 불가능). 접근 한정자는 public, internal, protected를 사용해야 함.


<사용 예시>

1. virtual - override (오버라이딩)

 -> 부모 클래스에서 정의한 함수를 자식 클래스에서 재정의.

 

만약 부모 클래스에서 정의한 함수 내용도 사용하고 싶다면 다음과 같이 입력하면 됩니다.

이처럼 virtual(부모 클래스) - override(자식 클래스) 는 부모 클래스에서 이미 정의한 함수를 재정의 할 수도, 내용을 추가할 수도 있습니다. 

 

 

2. abstract- override (추상클래스 상속)

abstract virtual과 다른 점은 abstract 함수를 가진 클래스는 본인도 반드시 abstract 클래스여야 한다는 것과, 부모 함수에서는 함수의 본문 내용을 정의할 수 없다는 것입니다. 

 


여기까지 virtual, override, abstract에 대해 가볍게 알아보았습니다.

부족한 내용이 있으면 댓글 남겨주세요!

반응형