C#sealedメソッド

2316 ワード

sealedは継承チェーンを中断するために使用されます.
sealedはクラスに継承された能力を失わせることができる.
public class SubClass : BaseInterClass {
        public override void absfunction()
        {
            base.absfunction();
            Console.WriteLine("beside baseclass ovveride absfunction output, sub class override absfunction!!!");
        }
       
    }
    sealed class subsubClass : SubClass { }
    class subsubsubClass : SubClass { }

sealedはメソッド上、現在のクラスまで使用され、現在のクラスを継承するすべてのサブクラスはoverrideというメソッドを使用できません.
  • virtual/abstractタイプの方法はpublicである必要があります.
  • abstractタイプのメソッドはabstractクラスでのみ定義され、virtualタイプのメソッドは制限されません.
  • virtual/abstractタイプの方法のみoverride.
  • virtualタイプの方法は、具体的に実装することができる.
  • abstractタイプの方法は具体的に実現できず、定義しかできない.
  • public abstract class AbstractClass{
            static void show() { Console.WriteLine("abstractor class show function !!!"); }
            public virtual void hello() { Console.WriteLine("abs class hello function !!!"); }
            public abstract void absfunction();
            public void normalfunction() { Console.WriteLine("abs class normal function!!!"); }
            
        }
    
        public class BaseInterClass : AbstractClass
        {
            public sealed override void hello() { Console.WriteLine("abs class sealed hello function,avoid be overitten!!!!"); }
            public override void absfunction()
            {
                Console.WriteLine("BaseInterClass override function!!!");
            }
            
        }
    
        public class SubClass : BaseInterClass {
            public override void absfunction()
            {
                base.absfunction();
                Console.WriteLine("beside baseclass ovveride absfunction output, sub class override absfunction!!!");
            }
        }
    
     :
    BaseInterClass b1 = new BaseInterClass();
                b1.normalfunction();
                b1.hello();
                SubClass b2 = new SubClass();
                b2.hello();
                b2.absfunction();
    
     :
    base class normal function!!!
    abs class normal function!!!
    abs class sealed hello function,avoid be overitten!!!!
    abs class sealed hello function,avoid be overitten!!!!
    BaseInterClass override function!!!
    beside baseclass ovveride absfunction output, sub class override absfunction!!!