C#sealed 关键字对类和方法应用限制。如果创建密封类,则无法派生它。如果您创建一个密封的方法,它不能被覆盖。
C# 密封类不能由任何类派生。让我们看一个 C# 中密封类的示例。
using System; sealed public class Animal{ public void eat() { Console.WriteLine("吃..."); } } public class Dog: Animal { public void bark() { Console.WriteLine("吠叫..."); } } public class TestSealed { public static void Main() { Dog d = new Dog(); d.eat(); d.bark(); } }
输出:
编译时错误:“狗”:不能从密封类型“动物”派生
C# 中的密封方法不能被进一步覆盖。它必须与方法中的 override 关键字一起使用。
让我们看一个 C# 中密封方法的示例。
using System; public class Animal{ public virtual void eat() { Console.WriteLine("吃..."); } public virtual void run() { Console.WriteLine("运行..."); } } public class Dog: Animal { public override void eat() { Console.WriteLine("吃面包..."); } public sealed override void run() { Console.WriteLine("运行速度非常快..."); } } public class BabyDog : Dog { public override void eat() { Console.WriteLine("吃饼干..."); } public override void run() { Console.WriteLine("运行缓慢..."); } } public class TestSealed { public static void Main() { BabyDog d = new BabyDog(); d.eat(); d.run(); } }
输出:
编译时错误:“BabyDog.run()”:无法覆盖继承的成员“Dog.run()”,因为它是密封的
using System; public class TestSealed { public static void Main() { sealed int x = 10; x++; Console.WriteLine(x); } }
输出:
编译时错误:无效的表达式术语“密封”