언어 자료구조 알고리즘/Escort C#

[C#] 6.2.4 가상화 virtual, 재정의 override

언제나휴일 2016. 5. 2. 14:35
반응형


가상화 virtual, 재정의 override


6.2.4 가상화 virtual, 재정의 override

 

 new 키워드로 기반 클래스의 멤버를 무효화 할 때는 사용하는 변수 형식의 멤버가 사용됩니다. 이러한 특징은 기반 형식의 변수로 다양한 파생 개체를 참조할 때 실제 개체에 정의된 멤버가 사용되지 않으므로 다형성의 장점을 충분히 사용하지 못합니다.

 

 C#에서는 기반 형식에서 정의한 멤버를 파생 형식에서 재정의하면 변수의 형식이 아닌 개체의 형식의 멤버가 동작하게 virtual 키워드와 override 키워드를 제공합니다. 기반 형식에서 virtual 키워드를 명시하여 멤버를 선언하면 가상 멤버가 됩니다. 이때 파생 형식에서 기반 형식의 가상 멤버를 재정의할 때는 override 키워드를 명시합니다.

 

virtual로 가상 메서드 선언, override로 재정의

class Man

{

    internal virtual void Work() //virtual 키워드로 가상 메서드 선언

    {

        Console.WriteLine("일을 하다.");

    }

}

class Student : Man

{

    internal override void Work() //override 기반 형식의 가상 메서드 재정의

    {

        Console.WriteLine("공부하다.");

    }

}

 

class Program

{

    static void Main()

    {

        Man man = new Student();

        man.Work();

    }

}

▶ 실행 결과

공부하다.

 

[C#] 6. 상속과 다형성 - 6.1 상속

[C#] 6.2 다형성 - 기반 형식의 변수로 파생한 개체를 참조

[C#] 6.2.2 is 연산자와 as 연산자

[C#] 무효화 - new 키워드, base 키워드

[C#] 6.2.4 가상화 virtual, 재정의 override

[C#] 6.2.5 abstract 키워드를 이용한 추상화

[C#] 6.2.5 sealed 키워드를 이용한 봉인

반응형