sealed密封类的使用

sealed密封类的使用sealed 密封类 为了避免滥用继承形式 publicsealed 密封类不能作为基类被别的元素继承 但其可以继承别的类或接口密封类中不能声明受保护成员或虚成员 因为受保护成员只能在派生类中访问 而虚成员只能在派生类中重写方法密封类的不可继承性 是因为不能声明为抽象类 即 sealed 前不能用 abstract 修饰 使用密封类的情况 1 如果是静态

 public sealed class myClass2 

密封方法

public class myclass { public virtual void method() { Console.WriteLine("基类中的虚方法"); } } public sealed class myclass2:myclass { public sealed overrider void method() { base.method(); Console.WriteLine("重写后的方法"); } }

说明:base.method();表示调用基类中的method方法,base关键字主要是为派生类调用基类成员提供一种简写形式

密封类和密封方法
密封类除了不能继承外和其他非密封类差不多。而密封方法则必须通过重写基类中的虚方法来实现。
例子:

namespace Test { public class myClass1 { /// <summary> /// 虚方法,用来显示信息 /// </summary> public virtual void ShowInfo() { } } public sealed class myClass2 : myClass1 //密封类,继承自myClass1 { private string id = ""; //string类型变量,用来记录编号 private string name = ""; //string类型变量,用来记录名称 /// <summary> /// 编号属性 /// </summary> public string ID { get { return id; } set { id = value; } } /// <summary> /// 名称属性 /// </summary> public string Name { get { return name; } set { name = value; } } /// <summary> /// 密封并重写基类中的ShowInfo方法 /// </summary> public sealed override void ShowInfo() { Console.WriteLine(ID + " " + Name); } } class Program { static void Main(string[] args) { myClass2 myclass2 = new myClass2(); //实例化密封类对象 myclass2.ID = "BH0001"; //为密封类中的编号属性赋值 myclass2.Name = "TM"; //为密封类中的名称属性赋值 myclass2.ShowInfo(); //调用密封类中的密封方法 } } } 

运行结果BH0001 TM

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/230984.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号