クラス修飾子リファレンス
このページには、クラス修飾子のリファレンス情報が含まれています。
有効な組み合わせ
#クラス修飾子の有効な組み合わせとその結果としての機能は次のとおりです。
| 宣言 | コンストラクト? | 拡張? | 実装? | ミックスイン? | 網羅的? |
|---|---|---|---|---|---|
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 | すべて同じ2つの機能(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宣言によってのみ実装できます。 |