'추상 메서드'에 해당되는 글 1건
- 2009.03.05 [C#] 추상클래스, 추상메서드 예제
[C#] 추상클래스, 추상메서드 예제
using System.Collections.Generic;
using System.Linq;
using System.Text;
// 구현 코드를 가지지 않는 메서드가 있는데 이런 메서드를 추상 메서드라고 한다.
// 추상메서드는 abstract 지정자를 붙이는데 인수 목록과 리턴 타입은 가지지만
// 본체는 가지지 않으며 세미콜론 하나로 끝난다.
//
// 다음이 그 예이다.
// public abstract int MoMo(int a, double b);
//
// 추상 메서드는 너무 일반적이기 때문에 코드를 정의할 수 없으며
// 파생 클래스에서 재정의해야만 호출 가능한 메서드가 된다.
// 파생 클래스에서 반드시 재정의해야 하므로 virtual을 붙이지 않아도 자동으로 가상이다.
//
// 추상 클래스는 너무 일반적이어서 인스턴스를 생성할 수 없는 클래스이다.
// 클래스 선언문에 abstract 지정자를 붙이면 이 클래스는 추상 클래스가 된다.
//
// 추상 메서드가 하나라도 선언되어 있는 클래스는 역시 추상이어야 한다.
namespace Abstract
{
abstract class Animal // 동물들은 울수 있지만 동물 그 자체는 우는 방식을 결정할 수 없는 것이다.
{
public abstract void Sound(); // 그래서 Animal의 Sound 메서는 본체를 가지지 않는 추상 메서드로 정의
} // 동물은 분명히 울기는 우는데 어떻게 우는지는 Animal 단계에서 결정할 수
// 없고 Dog, Cow로 내려가 봐야 아는 것이다.
class Dog : Animal
{
public override void Sound()
{
Console.WriteLine("멍멍");
}
}
class Cow : Animal
{
public override void Sound()
{
Console.WriteLine("음메");
}
}
class Cat : Animal
{
public override void Sound()
{
Console.WriteLine("야옹");
}
}
class Program
{
static void Main(string[] args)
{
Animal A;
A = new Dog(); A.Sound();
A = new Cow(); A.Sound();
A = new Cat(); A.Sound();
}
}
}
출처: 가메출판사, 닷넷 프로그래밍 정복, 김상형 저
'C# .NET' 카테고리의 다른 글
유니코드 변경 (0) | 2009.04.09 |
---|---|
[ C# ] Virtual , Override, New 의 관계... (0) | 2009.03.05 |
c#에서 override키워드의 의미 (0) | 2009.03.05 |
주석을 달아주는 편리한 Visual Studio Addin. Comment Helper v1.0 정식 버젼 (VS2005/2008 Addin) (0) | 2009.03.04 |
String 과 StringBuilder의 차이점 (0) | 2009.02.27 |