sealed 修饰符

当对一个类应用 sealed 修饰符时,此修饰符会阻止其他类从该类继承。

在下面的示例中,类 B 从类 A 继承,但是任何类都不能从类 B 继承。

class A {}

sealed class B : A {}

还可以在重写基类中的虚方法或虚属性的方法或属性上使用 sealed 修饰符。这将使您能够允许类从您的类继承,并防止它们重写特定的虚方法或虚属性。

在下面的示例中,C 从 B 继承,但 C 无法重写在 A 中声明并在 B 中密封的虚函数 F。

class A

{

protected virtual void F()

{

Console.WriteLine("A.F");

}

protected virtual void F2()

{

Console.WriteLine("A.F2");

}

}

class B : A

{

sealed protected override void F()

{

Console.WriteLine("B.F");

}

protected override void F2()

{

Console.WriteLine("B.F2");

}

}

class C : B

{

protected override void F2()

{

Console.WriteLine("C.F2");

}

}

当在类中定义新的方法或属性时,通过不将这些方法或属性声明为 virtual,可防止派生类重写这些方法或属性(默认是隐藏掉方法,并不是不能重写)。将 abstract 修饰符用于密封类是错误的做法,因为抽象类必须由提供抽象方法或属性的实现的类继承。当应用于方法或属性时,sealed 修饰符必须始终与 override 一起使用。由于结构是隐式密封的,因此它们不能被继承。

sealed class SealedClass

{

public int x;

public int y;

}

class SealedTest2

{

static void Main()

{

SealedClass sc = new SealedClass();

sc.x = 110;

sc.y = 150;

Console.WriteLine("x = {0}, y = {1}", sc.x, sc.y);

}

}

// Output: x = 110, y = 150

在上一个示例中,您可能试图使用下面的语句从密封类继承:class MyDerivedC: SealedClass {} // Error将产生一条错误消息:

‘MyDerivedC‘ cannot inherit from sealed class ‘SealedClass‘.

时间: 2024-10-14 10:28:26

sealed 修饰符的相关文章

C# 中的sealed修饰符学习

转载原地址 http://developer.51cto.com/art/200908/147327.htm C#语言还是比较常见的东西,这里我们主要介绍C# sealed修饰符,包括介绍两个修饰符在含义上互相排斥用于方法和属性等方面. C# sealed修饰符是干什么的? C# sealed修饰符表示密封用于类时,表示该类不能再被继承,不能和 abstract 同时使用,因为这两个修饰符在含义上互相排斥用于方法和属性时,表示该方法或属性不能再被重写,必须和 override 关键字一起使用,因

C#高级编程之Sealed修饰符

1.sealed 修饰符用来干什么的呢? a.修饰类时,表示被修饰的类不能再继承.不可以和abstract一起用,因为意义相反. b.修饰方法或者属性,表示被修饰方法或者属性不可以被重写.必须和 override 关键字一起使用. 因为使用 sealed 修饰符的方法或属性肯定是基类中相应的虚成员. 通常用于实现第三方类库时不想被客户端继承,或用于没有必要再继承的类以防止滥用继承造成层次结构体系混乱,恰当的利用sealed修饰符也可以提高一定的运行效率,因为不用考虑继承类会重写该成员. 案例:

简述c#之sealed 修饰符

sealed 修饰符表示密封 用于类时,表示该类不能再被继承,不能和 abstract 同时使用,因为这两个修饰符在含义上互相排斥 用于方法和属性时,表示该方法或属性不能再被重写,必须和 override 关键字一起使用,因为使用 sealed 修饰符的方法或属性肯定是基类中相应的虚成员 通常用于实现第三方类库时不想被客户端继承,或用于没有必要再继承的类以防止滥用继承造成层次结构体系混乱 恰当的利用 sealed 修饰符也可以提高一定的运行效率,因为不用考虑继承类会重写该成员 示例: Codeu

深入浅出OOP(五): C#访问修饰符(Public/Private/Protected/Internal/Sealed/Constants)

访问修饰符(或者叫访问控制符)是面向对象语言的特性之一,用于对类.类成员函数.类成员变量进行访问控制.同时,访问控制符也是语法保留关键字,用于封装组件. Public, Private, Protected at Class Level 在创建类时,我们需要考虑类的作用域范围,如谁可访问该类,谁可访问该类成员变量,谁可访问该类成员函数. 换而言之,我们需要约束类成员的访问范围.一个简单的规则,类成员函数.类成员变量之间可以自由 访问不受约束,这里主要说的是外部的访问约束.在创建class的时候,

C#语言中的修饰符汇总

1. 访问修饰符 指定声明的类型和类型成员的可访问性. (1) public:对任何类和成员都公开, 无限制访问;是类型和类型成员的访问修饰符.公共访问是允许的最高访问级别.对访问公共成员没有限制. (2) private:仅仅对该类公开;是一个成员访问修饰符.私有访问是允许的最低访问级别.私有成员只有在声明它们的类和结 构体中才是可访问的. (3) internal:只能值包含该类的程序集中访问该类(只是单独的项目,而不是整个解决方案);是类型和类型成员的访问修饰符.只有在同一程序集的文件中,

【转】C# 中访问修饰符

用通过代码:  类内部 using System;class Mod{    void defaultMethod()    {        Console.WriteLine("this is a default method");    }    public void publicMethod()    {        Console.WriteLine("this is a public method");    }    private void pr

private、 protected、 public、 internal 修饰符的访问权限

3. 简述 private. protected. public. internal 修饰符的访问权限.private : 私有成员, 在类的内部才可以访问.protected : 保护成员,该类内部和继承类中可以访问.public : 公共成员,完全公开,没有访问限制.internal: 在同一命名空间内可以访问.4. 写出一条Sql语句: 取出表A中第31到第40记录(SQLServer, 以自动增长的ID作为主键,  注意:ID可能不是连续的.)select top 10 * from A

C#与Java在修饰符上的不同

1.readonly 修饰符仅用于修饰类的数据成员.正如其名字说的,一旦它们已经进行了写操作.直接初始化或在构造函数中对其进行了赋值,数据成员就只能对其进行读取. readonly 和 const 数据成员不同之处在于 const 要求你在声明时进行直接初始化. class MyClass { const int constInt = 100; //直接进行 readonly int myInt = 5; //直接进行 readonly int myInt2; public MyClass()

C#继承机制 继承与访问修饰符

继承与访问修饰符 访问修饰符是一些关键字,用于指定声明的成员或类型的可访问性.类的继承中有四个访问修饰符: public protected internal private.使用这些访问修饰符可指定下列五个可访问性级别: public protected internal internal protected private. 1.继承中关于可访问域的一些问题 基类的所有成员(实例构造函数.析构函数和静态构造函数除外)都由派生类型继承.这甚至包括基类的私有成员.但是,私有成员的可访问域只包括声