十、密封类和密封方法

密封类

密封类可以用来限制扩展性,如果密封了某个类,则其他类不能从该类继承。

如果密封了某个成员,则派生类不能重写该成员的实现。

一个密封类是没有也不能继承的类,因此sealed关键字和abstract关键字不能同时使用。

密封类除了不能被继承外,其他与非密封类一样。

C#中声明密封类时需要使用sealed关键字。

访问修饰符 sealed class 类名:基类或接口
{
       //类成员      
}

public sealed class myClass //声明密封类
{
       public int i=0;
       public void methed()
       {
           Console.WriteLine("密封类");
        }
}    

密封方法是为了重写基类的虚方法并提供具体的实现,同时防止其后继类(派生类)再次重写该虚方法。

因此在密封方法中sealed关键字总是和override关键字同时使用。

public/*基类的可访问性一定要高于子类的,平级也可以*/class Class1  
    {  
        public virtual void Write()  
        {  
            Console.WriteLine("未密封方法");  
        }  
    }  

//如果一个类不希望将来在使用的过程中被继承,被派生,这时候可以采用关键字sealed  
    //虚方法virtual 抽象方法abstract的存在就是为了继承,为了派生,因此不能被放在sealed类中  
    public class Class2:Class1  
    {  
        public sealed override void Write()  
        {  
            Console.WriteLine("密封方法");  
        }  
    }  
public class Class3:Class2  
    {  
       /* public override sealed void Write() 
        { 
            在Class2中该方法被密封,无法重写。 
        }*/  
    }  
原文地址:https://www.cnblogs.com/baixiao/p/7710877.html