sealed 키워드는 클래스와 메서드 앞에 적용하는 키워드로 클래스에 적용하면 절대 상속하지 말라는 의미가 되고, 메서드에 적용하면 더 이상 오버라이딩하지 말라는 의미
sealed class Human
{
//필드값과 메서드
}
class Player : Human //오류발생
{
}
class Human
{
public virtual void Test()
{
Console.WriteLine("나는 조상");
}
}
class Adult : Human
{
sealed public override void Test() //오버라이딩 봉인
{
Console.WriteLine("나는 부모");
}
}
class Baby : Adult
{
public override void Test() //여기서 에러
{
Console.WriteLine("나는 자식");
}
}
abstract 키워드는 sealed 키워드와 반대로 무조건 상속해서 쓰라는 의미 또는 이 메서드는 반드시 오버라이딩해라는 의미로 사용
abstract class Human
{
//필드값과 메서드
}
class Adult : Human
{
}
class Program
{
static void Main(string[] args)
{
Human human = new Human(); //여기서 에러 반드시 상속하여야 한다.
Human Adult = new Adult(); //상속하여 사용하면 에러가 발생하지 않음
}
}
abstract class Human
{
public abstract void Test(); //virtual을 적지 않아야 된다.
//abstract 메서드는 중괄호를 사용하지 않고 바로 세미콜론을 찍어야 한다.
}
class Adult : Human
{
public override void Test()
{
Console.WriteLine("상속했습니다.");
}
}
class Program
{
static void Main(string[] args)
{
Human Adult = new Adult(); //상속하여 사용하면 에러가 발생하지 않음
}
}