当一个类被生命为sealed类,就代表了这个类不允许被继承,它是最终版本,无法派生出新的子类。
class A {}
sealed class B : A {}
当你将类标记为 sealed
后,任何尝试从这个类派生出新的类都会导致编译错误。这种设计对于那些不希望其他人修改或扩展特定类的情况非常有用,尤其是当你认为这个类已经完成并且不应该再被继续扩展时。
值得注意的是,你可以使用 sealed
关键字修饰类、方法或属性。如果应用在类上,该类将无法被继承;如果应用在方法或属性上,它们将无法被重写。
总的来说,密封类是一种限制继承和重写的有效方式,可以在确保类的稳定性和一致性时使用。
接口定义了所有类继承接口时应遵循的语法合同。接口定义了语法合同 “是什么” 部分,派生类定义了语法合同 “怎么做” 部分。
接口定义了属性、方法和事件,这些都是接口的成员。接口只包含了成员的声明。成员的定义是派生类的责任。接口提供了派生类应遵循的标准结构。
接口使得实现接口的类或结构在形式上保持一致。
抽象类在某种程度上与接口类似,但是,它们大多只是用在当只有少数方法由基类声明由派生类实现时。
接口本身并不实现任何功能,它只是和声明实现该接口的对象订立一个必须实现哪些行为的契约。
抽象类不能直接实例化,但允许派生出具体的,具有实际功能的类。
一组:接口中可以包含多个方法。
对外:接口成员是要求子类实现,自己不用实现。
行为:接口中只能包含抽象方法成员(属性、方法)。
规范:要求子类必须自行实现(包括属性)。
is a的时候用类。通常类代表了与子类是统一类别。
has a的时候用接口。通常接口代表了一系列动作。
类与类是单继承,接口是多实现,也就是说你只能有一个类别,但是可以有多种动作。
接口使用 interface 关键字声明,它与类的声明类似。接口声明默认是 public 的。下面是一个接口声明的实例: