반응형
추상 함수 - abstract
- 기본 클래스가 해당 특징을 가진다는 것을 '명시'하기위해 구현
- abstract 키워드를 사용해 생성되었지만, 본문 내에서 구현하는 것은 따로 없음
- 추상 클래스에서 정의된 추상함수는 본 함수를 상속받은 하위 클래스들에서 '반드시' 재정의(override) 되어야한다.
- 클래스 내부에 abstract를 사용한 키워드가 있는 경우, 반드시 클래스에도 abstract 키워드를 사용해서 정의해야 한다.
- abstract 클래스는 인스터화 할 수 없음(new 키워드로 생성 불가)
[ex]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Abstract_Method
{
class Program
{
static void Main(string[] args)
{
childclass ch = new childclass();
ch.sum();
Console.ReadKey();
}
}
}
abstract class baseclass
{
public int num = 5;
public abstract void sum(); // 자식 클래스에서 반드시 구현해야 함
}
class childclass : baseclass
{
// override를 이용해 재정의를 나타내야 함
public override void sum()
{
Console.WriteLine("Total Sum : " + num * num);
}
}