類修飾符參考
本頁包含關於類修飾符的參考資訊。
有效組合
#類修飾符的有效組合及其對應的能力如下:
| 宣告 | 構造? | 擴充套件? | 實現? | 混入? | 窮盡? |
|---|---|---|---|---|---|
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 宣告實現。 |