C# 属性

C# 抽象

C# 字符串

C# 泛型

C# 杂项

C# 新特性

C# 密封

C#sealed 关键字对类和方法应用限制。如果创建密封类,则无法派生它。如果您创建一个密封的方法,它不能被覆盖。

注意:结构是隐式密封的,因此它们不能被继承。

C# 密封类

C# 密封类不能由任何类派生。让我们看一个 C# 中密封类的示例。

例子 (Example)

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# 密封方法

C# 中的密封方法不能被进一步覆盖。它必须与方法中的 override 关键字一起使用。

让我们看一个 C# 中密封方法的示例。

例子 (Example)

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()”,因为它是密封的

注意:局部变量不能被密封。

例子 (Example)

using System;  
public class TestSealed  
{  
    public static void Main()  
    {  
        sealed int x = 10;  
        x++;  
        Console.WriteLine(x);  
    }  
}

输出:

编译时错误:无效的表达式术语“密封”


上一主题 C# 多态性 下一主题 没有了
  • 使用社交账号登录,本站支持
全部评论(0)