공부/C#

상속 가상 함수 선언

미다손 2016. 5. 8. 21:14


//상속 가상 함수 선언

class Unit

{

public virtual void Test()    // virtual public void Test() 도 가능

{

Console.WriteLine("유닛이다.");

}

}

//virtual 선언시 주의 사항 : 

//1. private로 만들 수 없다. 접근 자체가 불가하므로 컴파일이 안됨.

//2. static으로도 만들 수 없다. 객체의 상속 관계에서 적용되는 것인다. 메모리 계속 유지되어있는 static은 재정의 할 수 없다.



//위처럼 선언된 가상 함수는 상속받은 클래스가 오버라이드(재정의) 할수 있다.

class Gunner: Unit

{

public override void Test()    // override public void Test() 도 가능

{

Console.WriteLine("거너롤세.");

}

}

//또 이를 상속받은 클래스가 다시 재정의 할 수도 있다.

class Mechanic : Gunner

{

public override void Test()    // override public void Test() 도 가능

{

Console.WriteLine("메카닉이야.");

}

}


/*

====================================

만약 재정의 하려는 의도가 아니라 

새로운 함수를 추가한 것임을 알리기 위해서는

new를 명시적으로 적어주면 된다.

====================================
*/

class Mechanic : Gunner

{

new public void Test()    // public new void Test() 도 가능

{

}

}

/*
====================================

*/