首页 理论教育 C#编程密封类和密封成员

C#编程密封类和密封成员

时间:2023-10-22 理论教育 版权反馈
【摘要】:在本节的内容中,将分别对密封类和密封成员的基本知识进行简要说明。在C#中,使用sealed修饰符来密封一个类,具体格式如下:在声明类时,当用sealed修饰符修饰后就构成了密封类。通过密封类可以防止程序内发生意外的派生。

C#编程密封类和密封成员

如果所有的类都能被继承,将会导致继承的滥用。会使整个项目程序的结构变得错综复杂,不利于对系统的维护。因此需要根据具体需要,对类和其成员进行密封。在本节的内容中,将分别对密封类和密封成员的基本知识进行简要说明。

1.密封类

在C#中,通常将没有必要封装处理被继承的类进行密封,这样被密封的类称为密封类。当一个类被密封后,就不能被其他的类所继承。

在C#中,使用sealed修饰符来密封一个类,具体格式如下:

在声明类时,当用sealed修饰符修饰后就构成了密封类。如果这个密封类被其他类继承后,就会产生编译错误

注意

一个密封类不能同时是抽象类,所以sealed和abstract不能同时使用。例如,下面的一段代码将会发生变异错误:

在上述代码中,类nn被声明为密封类,所以当类zz继承类nn时,将会出现错误。

通过密封类可以防止程序内发生意外的派生。因为密封类不能被继承,所以对密封类实例虚函数的调用可以转换为非需调用来处理,这样可以提高程序的运行性能。

2.密封成员(www.xing528.com)

在C#的非密封类中,如果要防止一个实例成员在子类中被重写,可以将该成员设置为密封成员。具体方法是,在该成员声明时使用修饰符sealed来修饰。C#的密封成员可以是密封方法、密封属性、密封索引和密封事件,其中密封方法在现实中最为常见。

注意

1)并不是所有的函数方法都能被密封。密封方法只能用于对基类的虚方法进行重写,并提供具体实现。所以在密封方法声明时,sealed修饰符需要和override修饰符同时使用。通过使用sealed修饰后,可以防止派生子类重写该方法。

2)两个sealed修饰符不能同时使用。

看下面的一段代码:

在上述代码中,类nn提供了如下两个重写方法,具体说明如下。

1)密封方法F(),在nn的子类zz中,此方法不能被重写。

2)没有密封方法A(),在nn的子类zz中,此方法可以被重写。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈