1

インスタンス化されたクラスの場合、オブジェクトが作成されます。メモリはインスタンスに割り当てられます。
インターフェイスがインスタンス化されるとどうなりますか?
インターフェイスにはコンストラクターがありますか? インターフェイス オブジェクトを作成しますか?インターフェイス オブジェクトにメモリを割り当てますか?

interface IInteface {}   
class Test : IInterface{}

IInterface ex1 = new Test();

上記の行は何を作成しますか?

4

2 に答える 2

4

インターフェイスは、インスタンス化できない抽象的な概念です。これらは、実行するクラスを実装するための契約を定義するのに役立ちます。

次に、インターフェイスを実装する具象クラスのインスタンスを作成し (通常は をnew使用)、インターフェイス参照を使用してそのインスタンスを指すことができます。

于 2013-11-04T04:03:22.823 に答える
1

インターフェイスにはコンストラクターがなく、それ自体で作成することはできません。

オブジェクトを変数 (インターフェイス タイプの変数を含む) に割り当てても、新しいオブジェクトは作成されず、同じオブジェクトへの別の参照にすぎません。

 class DerivedWithInterface: Base, IEnumerable {}

これで、クラスのインスタンスを作成DerivedWithInterfaceし、任意の基本クラス/インターフェイスの変数に割り当てることができますが、new作成されるのはオブジェクトのみです。

 DerivedWithInterface item = new DerivedWithInterface();
 IEnumerable asEnumerable = item; // asEnumerable is the same object as create before
 Base asBase = item;

これで、元のオブジェクトにキャストを戻すことができますが、正確に 1 つ (またはnew編集した数だけ)が存在します。

 IEnumerable asEnumerableItem = new DerivedWithInterface(); 
 DerivedWithInterface itemViaCast = (DerivedWithInterface)asEnumerableItem;

とタイプの および オブジェクトの同じ単一のインスタンスを参照asEnumerableItemするitemViaCastasEnumerableItem

于 2013-11-04T04:29:52.867 に答える