11
Scalaでは、基底クラスまたは特性(インターフェイス)を定義してそのクラスを拡張できるクラスのみを同じクラスに配置する必要があります。.NETクラスの抽象クラスまたはインターフェイスのシール
これはライブラリをコーディングするときに便利なパターンですが、.NETに相当するものはありますか?
Scalaでは、基底クラスまたは特性(インターフェイス)を定義してそのクラスを拡張できるクラスのみを同じクラスに配置する必要があります。.NETクラスの抽象クラスまたはインターフェイスのシール
これはライブラリをコーディングするときに便利なパターンですが、.NETに相当するものはありますか?
これをシミュレートする唯一の方法は、抽象クラスにプライベートコンストラクタを持ち、ネストされたクラスとして実装を提供することです。
例
public abstract class Foo
{
private Foo(int k) {}
public class Bar : Foo
{
public Bar() : base(10) {}
}
}
+1。または、抽象クラス 'internal'のコンストラクタをマークすることは、クラスのために得ることのできるもう1つの同様のオプションです。 –
私は利点が表示されていない、あなたはELI5を喜ばせることができますか? (私はあなたが欲しいものは知っていますが、私は理由はわかりません) – jnovacho
このパターンでは、実際には "洗練された"列挙を実装することができます。これは本当に便利です。あなたは抽象クラスのための特定の数の実装だけがあることを保証することができます – Edmondo1984
ああ私が参照してください!ありがとう。 – jnovacho