『我们在努力扩大自己,以靠近,以触及我们自身以外的世界。』—— 豪尔赫·路易斯·博尔赫斯
密封类与密封方法
1、密封类概述及声明
密封类可以用来限制扩展性,如果密封了某个类,则其他类不能从该类继承;如果密封了某个成员,则派生类不能重写该成员的实现。
C#中声明密封类时需要使用sealed关键字,具体语法格式如下。
访问修饰符sealed claled 类名:基类或接口
{
//类成员
}
public sealed class myClass //声明密封类
{
public int = 0;
public void method()
{
Console.WriteLine("密封类");
}
}
2、密封方法概述及声明
public class myClass1
{
public virtual void Method()
{
Console.WriteLine("基类中的虚方法");
}
}
public sealed class myClass2:myClass1
{
public sealed override void Method() //密封并重写基类中的虚方法Method
{
base.Method();
Console.WriteLine("基类中重写后的方法");
}
}
3、密封类与密封方法的使用
密封类除了不能被继承外,与非密封类的用法大致相同,而密封方法则必须通过重写基类中的虚方法来实现。
实例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Alei2022
{
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() //密封并重写基类中的虚方法Method
{
Console.WriteLine(ID+" " + Name);
}
}
class Program
{
static void Main(string[] args)
{
myClass2 myclass2 = new myClass2(); //实例化密封类对象
myClass2.ID = "A001"; //为密封类中的编号属性赋值
myClass2.Name = "Alei"; //为密封类中的名称属性赋值
myClass2.ShowInfo(); //调用密封类中的密封方法
}
}
}