百度网站域名费一年多少钱,网站建设综合案例,企业所得税计税依据,合肥网红目录
一、定义与特性
1.何时使用密封类
2.定义
3.特性
二、示例 如果所有的类都可以被继承#xff0c;很容易导致类的层次结构变得十分复杂。使对类的理解和使用变得十分困难。为了避免滥用继承#xff0c;C#中提出了密封类的概念。
一、定义与特性 密封类可以用来限制…目录
一、定义与特性
1.何时使用密封类
2.定义
3.特性
二、示例 如果所有的类都可以被继承很容易导致类的层次结构变得十分复杂。使对类的理解和使用变得十分困难。为了避免滥用继承C#中提出了密封类的概念。
一、定义与特性 密封类可以用来限制扩展性如果密封了某个类则其他类不能从该类继承如果密封了某个成员则派生类不能重写该成员的实现。默认情况下不应密封类型和成员。
1.何时使用密封类
C#中使用密封类时如果类满足如下条件则应将其密封
☑ 类包含带有安全敏感信息的继承的受保护成员。
☑ 类继承多个虚成员并且密封每个成员的开发和测试开销明显大于密封整个类。
☑ 类是一个要求使用反射进行快速搜索的属性。密封属性可提高反射在检索属性时的性能。
2.定义
C#中声明密封类时需要使用sealed关键字具体语法格式如下
访问修饰符 sealed class 类名基类或接口
{//类成员
}
3.特性
密封类不能作为基类被继承但它可以继承别的类或接口。在密封类中不能声明受保护成员或虚成员因为受保护成员只能从派生类进行访问而虚成员只能在派生类中重写。由于密封类的不可继承性因此密封类不能声明为抽象的即sealed修饰符不能与abstract修饰符同时使用。并不是每个方法都可以声明为密封方法密封方法只能用于对基类的虚方法进行实现并提供具体的实现。所以声明密封方法时sealed修饰符总是和override修饰符同时使用。密封类除了不能被继承外与非密封类的用法大致相同只能通过实例化密封类的对象来访问而不能被继承。而密封方法则必须通过重写基类中的虚方法来实现。
二、示例 声明一个密封类myClass2继承自myClass1类在myClass2密封类中声明两个公共属性分别用来表示用户编号和名称然后密封并重写myClass1基类中的虚方法ShowInfo()并提供具体的实现。最后在主程序类Program的Main()方法中实例化MyClass2密封类的一个对象然后使用该对 象访问myClass2密封类中的公共属性和密封方法。
// 密封类和密封方法
namespace _05
{public class MyClass1{public virtual void Showlnfo() //虚方法用来显示信息{}}public sealed class MyClass2 : MyClass1 //密封类继承自myClass1{private string id ; //string类型变量用来记录编号private string name ; //string类型变量用来记录名称public string ID //编号属性{get{return id;}set{id value;}}public string Name // 名称属性{get{return name;}set{name value;}}public sealed override void Showlnfo() //密封并重写基类中的Showlnfo()方法{Console.WriteLine(ID Name);}}class Program{static void Main(string[] args){MyClass2 myclass2 new() //实例化密封类对象{ID BH0001, //为密封类中的编号属性赋值Name TM //为密封类中的名称属性赋值};myclass2.Showlnfo(); //调用密封类中的密封方法}}
}
//运行结果BH0001TM