c#中sealed修饰符的例子
时间: 2023-08-05 19:06:03 浏览: 157
在C#中,sealed关键字用于防止其他类继承该类或者该类的成员被重写。下面是一个使用sealed修饰符的例子:
```
public sealed class MyClass
{
//成员变量
private int myVar;
//构造函数
public MyClass(int var)
{
myVar = var;
}
//成员方法
public sealed void MyMethod()
{
Console.WriteLine("MyMethod is called.");
}
}
```
在上面的例子中,MyClass类被使用sealed修饰符标记为不可被继承。同时,MyMethod方法也被使用sealed修饰符标记为不可被重写。这样,其他类就无法继承MyClass类或者重写MyMethod方法。
相关问题
如果父类方法不想被子类继承要加什么修饰符,子类的方法不想被父类调用呢?现一个不能被继承的类
如果父类中的方法不想被子类继承,可以使用`private`访问修饰符。这表示该方法只能在本类内部访问,不会暴露给子类。对于子类的方法不想被父类直接调用的情况,通常通过`final`关键字实现,标记为`final`的方法在子类中不能被重写。
至于创建一个不能被继承的类,这个在大多数面向对象的语言中是不可能的,因为类是可以被继承的特性之一。然而,你可以创建一个不可实例化的类(也称为抽象类或者"sealed"类,如C#中的sealed class),它不能有默认构造函数,然后声明所有方法为`abstract`或`private`,使得其他类无法继承它并且不能直接创建对象:
```java
// Java 示例 (假设Java不支持密封类)
public abstract class NonInheritableClass {
private NonInheritableClass() {} // 防止外部实例化
// 抽象方法或私有方法,不允许子类覆盖
private final void protectedMethod() {
// ...
}
}
```
在这个例子中,`NonInheritableClass`是一个抽象类,其所有方法要么是`abstract`(强制子类实现),要么是`private`(禁止子类直接访问)。试图继承这个类会报错,因为它没有默认构造函数。
阅读全文