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();
}
}
'IT_Programming > C#' 카테고리의 다른 글
This 키워드 (0) | 2006.02.24 |
---|---|
메서드 오버라이딩 (0) | 2006.02.24 |
메서드 오버라이딩2 - abstract (0) | 2006.02.24 |
메서드 오버라이딩1 - new (0) | 2006.02.24 |
상속 (0) | 2006.02.24 |