2010. 3. 29. 15:37

using System;
using System.Collections.Generic;
using System.Text;

namespace ClassTest4
{
    class AB
    {
        public virtual void ABC()
        {
            Console.WriteLine("A-ABC");
        }
        public virtual void Display()
        {
            Console.WriteLine("A-Display");
        }
        public virtual void Output()
        {
            Console.WriteLine("A-Output");
        }
    }
    class A:AB {
        public sealed override void ABC() {
            Console.WriteLine("A-ABC");
        }
        public override void Display()
        {
            Console.WriteLine("A-Display");
        }
        public override void Output()
        {
            Console.WriteLine("A-Output");
        }
    }
    class B :A{
        /*    public override void ABC() {
                Console.WriteLine("B-ABC");
            } 위가 실드로 되어있어서 재정의 못함*/

        public override void Display() {
            Console.WriteLine("B-Display");
        }
    }

    class CTest
    {
        static void Main(string[] args)
        {
            A pA = new A();
            pA.ABC();pA.Display();pA.Output();
            pA = new B();
            pA.ABC();pA.Display();pA.Output();
        }
    }
}

n1. sealed 클래스
- sealed 클래스는 파생 클래스에서 사용할 없는 클래스 이다.
- sealed 클래스는 상속을 막는 클래스 이다.
- sealed 클래스는 보안 코드 설계 부분의 명확하게 하기 위해 사용
- sealed클래스는 상업적인 코드 내부구현이 복잡해 파생클래스에서
  오버라이드하면 문제가 발생할 가능성이 있는 코드를 사전에 차단할 용도로 사용
n2. sealed 메서드
- sealed 메서드는 파생 클래스에서 오버라이드 없다.
- sealed 메서드는 꼭 override 앞에서만 사용할 수 있다.
- 하지만 sealed를 쓰면 상속을 줄 수 없으므로 후위 클래스에서 재정의 할 수 없다.



'.NET > C#' 카테고리의 다른 글

어셈블리 동적 로딩  (0) 2010.03.31
Const Vs Readonly  (0) 2010.03.29
Sort메소드  (0) 2010.03.28
Delegate-2  (0) 2010.03.27
직렬화  (0) 2010.03.27
Posted by 아몰라