다형성에 대해 알아보자.
Interface 글에 키워드를 간략히 정리 해놨지만 이번엔 좀 더 자세한 정리이다.
부모 클래스에서 virtual을 사용해서 함수를 작성하면, 상속받는 자식 클래스에서 함수의 재정의를 허용한다.
즉, 재정의를 하지않으면 부모 클래스의 함수가 실행되고 자식 클래스에서 재정의를 했다면 재정의 된 함수가 실행된다.
class Animal
{
public virtual void Eat()
{
Console.WriteLine("냠냠");
}
// 기본은 구현하고, 상속을 가능하게 하기 위해 virtual 키워드를 사용.
override를 사용하여 상속된 속성을 자식 클래스에서 재정의를 할 수 있다.
class Mouse : animal
{
public override Eat()
{
Console.WriteLine("치즈 냠냠");
}
}
또한, 부모 함수를 사용하고 싶다면 base 키워드를 사용한다.
public override Eat()
{
base.Eat();
Console.WriteLine("치즈 냠냠");
}
이렇게 사용하면 부모의 Eat()함수도 같이 호출된다.