본문 바로가기

C#

C# :: 가상함수, 추상함수 ( virtual, abstract )

Human - Parent Class


Student - Child Class



1. 가상 함수 (virtual)


< Human Class >


protected virtual void Info() { print("사람"); }


< Student Class >


부모 클래스인 Human 클래스의 Info를 override 할 수 있다.


protected override void Info()

{

base.Info() // 부모 클래스의 Info() 실행

print("학생");

}


2. 추상 함수 (abstract)


: 코드가 길어질 경우 만들어야 할 함수를 잊고 만들지 않을 수 있다. 이런 실수를 하지 않기 위해 자식 클래스에서 만들어야할 함수들을


부모 클래스에 abstract로 선언할 수 있다. 단, 함수에만 abstract를 붙여줄 뿐만 아니라 부모 클래스 앞에도 abstract를 추가해주어야 한다.


< Human Class >


선언) abstract public class Human : MonoBehaviour { ... }


abstract가 붙여져 있는 함수는 '미완성'이라고 보면 되고 미완성된 함수가 있는 클래스도 미완성된 클래스로 생각하면 편하다.


abstract protected void Name(); // 추상 함수 선언으로 반드시 자식 클래스에서 이 함수를 선언하도록 강요


< Student Class >


protected override void Name() { print("이름"); } // 선언하지 않을 시 오류