<메소드 오버라이딩2 - abstract(추상화)>
Abstract 제한자는 클래스, 메소드 및 프로퍼티에 대해
사용할 수 있다. 메소드가 abstract로 선언되었다면 해당
클래스에서는 이 메소드를 구현하지 않고 해당 클래스의
파생 클래스가 이 메소드를 구현해야 한다. abstract 메소드는
머리만 있고 몸통이 없는 메소드 이기 때문에
해당 클래스에서는 사용할 수 없다. 클래스 선언에
abstract 제한자를 사용하면 해당 클래스가 다른 클래스의
기본 클래스만 사용됨을 나타낸다.
abstract 메소드는 abstract 클래스 안에서만 선언할 수 있고
abstract 클래스는 자기 스스로 객체를 생성하지 못한다.
자신에게서 상속을 받은 클래스만이 객체를 생성할 수 있다.
또한 abstract 메소드는 상속 받은 클래스에서 반드시 구현해야 한다.
abstract 메소드를 파생클래스에서 오버라이드 할 때는 메소드
이름 앞에 override 키워드를 써줘야 한다.
ex)
abstract class Test
{
public abstract void Func();
}
class Test2 : Test
{
public override void Func()
{
//이런 저런 코드들....
}
----------------------------------
/* 2/24 객체지향적 프로그래밍(상속: abstract(추상화))*/
using System;
abstract class Com //abstract 을 쓰면 반드시 한번은 써야함.
{
public void Graph()
{
Console.WriteLine("그래픽 OK");
}
public abstract void Network(); // abstract 을 쓰면 반드시 한번은 써야함
}
class NCom : Com
{
public override void Network() /*override는 아버지클래스의 Network()함수의 틀은
그대로 쓰면서 안의 내용은 제정의 한다는 뜻*/
{
Console.WriteLine("네트워크 OK");
}
}
class Override
{
public static void Main()
{
// Com c = new Com(); <== abstract은 머리만 있고 몸체가 없기때문에
객체(인스턴스)생성이 불가능
Com c = new NCom(); // 그래서 상속받은 아들 클래스로 객체를 같이 생성함.
c.Graph();
c.Network();
}
}
[출처] 곰탱이의 블로그