본문 바로가기

C#(ASP.NET)

C#_메소드 오버라이딩(virtual)


<메소드 오버라이딩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();
 }

}

[출처] 곰탱이의 블로그