컴파일 한 번에 성공하는 그 날까지👀

코딩왕이 되고싶은 이코딩의 개발괴발 개발일지 😼

개발괴발🐾/C#

[C#] Sealed Class 란?

OI코딩 2024. 3. 8. 15:38

Sealed

단어 뜻 그대로 상속으로부터 '봉인' 시키는걸 말한다. 메서드 앞에 놓이면 메서드 상속을 막고, 클래스 앞에 놓이면 클래스 상속을 막는다는 이야기. 

 

* Sealed Class

아래와 같은 코드에서는 A를 상속받을 수 는 있지만 B를 상속받을 수는 없다.

class A {}
sealed class B : A {}

 

* Sealed Method

Human을 상속받은 Parent가 Eat에 Sealed 한정자를 붙였으므로 Child 클래스에서는 상속이 불가능하다.

public abstract class Human
    {
        public double Age { get; set; }

        public virtual void Work()
        {
            Console.WriteLine("Work hard");
        }

        public virtual void Sleep()
        {
            Console.WriteLine("Sleep deeply");
        }

        public abstract void Play();
        public abstract void Eat();

    }
    public class Parent : Human
    {
        public sealed override void Eat()
        {
            Console.WriteLine("Eat pizza");
        }

        public override void Play()
        {
            Console.WriteLine("Play hard");
        }

        public override void Sleep()
        {
            base.Sleep();
        }

        public override void Work()
        {
            base.Work();
        }
    }
    public class Child : Parent
    {
        //Eat는 상속 불가 

        public override void Play()
        {
            base.Play();
        }

        public override void Sleep()
        {
            base.Sleep();
        }

        public override void Work()
        {
            base.Work();
        }
    }