추상클래스
본문 로딩 중...
댓글 0
댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요.
추상클래스(abstract class)는 그 자체로는 인스턴스를 만들 수 없고, 물려받는 용도로만 쓰이는 클래스입니다.
문법형식 :
public abstract class <클래스이름> { // 멤버 }
public abstract class Monster {}
public class Slime : Monster {}
Monster m = new Monster() // 안됨.
Monster m = new Slime() // 됨.
본문 없이 선언만 두고, 파생 클래스가 반드시 구현하게 만드는 메서드 입니다.
public abstract class Monster
{
public abstract void Attack(); // 내용을 정할 수 없습니다.
}
public abstract class Slime : Monster
{
public override void Attack()
{
Console.WriteLine($"{name} 이(가) 몸을 부딪칩니다."}; // 구현하지 않으면 컴파일 오류 발생.
}
}
| 항목 | 일반 메서드 | virtual | abstract |
|---|---|---|---|
| 본문 | 있음 | 있음 | 없음 |
| 파생이 재정의 | 불가능 | 선택 | 필수 |
| 어디에 둘 수 있는가 | 모든 클래스 | 모든 클래스 | 추상 클래스만 |
| 재정의를 잊으면 | 해당 없음 | 기본 동작이 실행됨 | 컴파일 오류 |
abstract와 반대로 더이상 상속하거나 재정의하지 못하게 막는 한정자 입니다.
public sealed class Slime : Monster
{
public override void Attack();
}
public class KingSlime : Slime // 오류 발생 : 봉인된 클래스는 상속할 수 없습니다.
{
}
public int Id { get; private set; }
public abstract int Id { get; protected set; } // 가능