<메소드 오버라이딩3 -virtual>
Virtual키워드와 abstract 키워드의 차이는 abstract
메소드가 구현을 가지지 않고, abstract 클래스 안에
선언되어야 하는 것에 반해, Virtual 메소드는 구현을
가지고 일반 클래스에 선언될 수 있다는 것이다.
사실 Virtual 메소드는 Virtual 제한자가 붙는다는 것
외에는 다른 메소드와 동일하다. Virtual 메서드는
오버라이드 할 때 abstract 메소드와 마찬가지로
override 키워드를 사용한다.
ex)
/* 2/24 객체지향적 프로그래밍(상속: Virtual(제한자))*/
using System;
class Com
{
public void Gr()
{
Console.WriteLine("그래픽 OK");
}
public virtual void Ne()
{
Console.WriteLine("오래된 네트워크 OK");
}
}
class NCom : Com
{
public override void Ne() /*abstract와 같이 제정의를 위해서 override를 사용
즉 상속받은 함수를 그대로 쓰지 않고 새롭게 정의
하기 위해서 사용함*/
{
Console.WriteLine("새로운 네트워크 OK");
}
}
class Override
{
public static void Main()
{
Com c = new Com(); //virtual은 abstract와는 달리 객체(인스턴스)생성이 가능하다.
c.Gr();
c.Ne();
NCom n = new NCom();
n.Gr();
n.Ne();
}
}
[출처] 곰탱이의 블로그