类修饰符参考
本页包含关于类修饰符的参考信息。
有效组合
#类修饰符的有效组合及其对应的能力如下:
声明 | 构造? | 扩展? | 实现? | 混入? | 穷尽? |
---|---|---|---|---|---|
class | 是 | 是 | 是 | 否 | 否 |
base class | 是 | 是 | 否 | 否 | 否 |
interface class | 是 | 否 | 是 | 否 | 否 |
final class | 是 | 否 | 否 | 否 | 否 |
sealed class | 否 | 否 | 否 | 否 | 是 |
abstract class | 否 | 是 | 是 | 否 | 否 |
abstract base class | 否 | 是 | 否 | 否 | 否 |
abstract interface class | 否 | 否 | 是 | 否 | 否 |
abstract final class | 否 | 否 | 否 | 否 | 否 |
mixin class | 是 | 是 | 是 | 是 | 否 |
base mixin class | 是 | 是 | 否 | 是 | 否 |
abstract mixin class | 否 | 是 | 是 | 是 | 否 |
abstract base mixin class | 否 | 是 | 否 | 是 | 否 |
mixin | 否 | 否 | 是 | 是 | 否 |
base mixin | 否 | 否 | 否 | 是 | 否 |
无效组合
#某些修饰符组合是不允许的。
组合 | 原因 |
---|---|
base 、interface 和 final | 它们都控制相同的两个能力(extend 和 implement ),因此互斥。 |
sealed 和 abstract | 两者都不能被构造,因此组合使用是冗余的。 |
sealed 与 base 、interface 或 final | sealed 类型本身就不能被其他库混入、扩展或实现,因此与上述修饰符组合是冗余的。 |
mixin 和 abstract | 两者都不能被构造,因此组合使用是冗余的。 |
mixin 与 interface 、final 或 sealed | mixin 或 mixin class 声明旨在被混入,而上述修饰符会阻止这种行为。 |
enum 与任何修饰符 | enum 声明不能被扩展、实现、混入,并且总是可以被实例化,因此任何修饰符都不适用于 enum 声明。 |
extension type 与任何修饰符 | extension type 声明不能被扩展或混入,并且只能被其他 extension type 声明实现。 |