* 상위 클래스는 하위클래스가 override 해야할 메소드는 virtual로 한정!
class Animal
{
public virtual void Initialize()
{
Console.WriteLine("Animal");
}
}
class Cat:Animal
{
public override void initialize()
{
base.initialize();
Console.WriteLine("cat");
}
}
*고양이는 동물카테고리에 속하기 때문에 동물 속성두 필요합니다. 그래서 base.initialize(); 를 호출합니다.
*private로 선언한 메서드는 오버라이딩 할수 없습니다.
*메소드 숨기기
- CLR에게 기반클래스에서 구현된 버전의 메소드를 감추고 파생 클래스에서 구현된 버전만을 보여주는 것!
- 메소드 숨기기는 파생클래스 버전의 메소드를 new한정자로 수식함.
class Base
{
public void Method()
{
Console.WriteLine("Base.Method()");
}
}
class Derived:Base
{
public new void Method()
{
Console.WriteLine("Derived.Method()");
}
}
* 부모클래스를 상속받은 "Derived" 자식클래스
* 메소드 숨기기는 파생클래스 버전의 메소드를 new한정자로 수식함.