2015-12-09 6 views
10

C#では、継承したクラスオブジェクトを作成すると、それもベースクラスオブジェクトを作成していますか?そのクラスのコンストラクタを子クラスのコンストラクタから呼び出すため、混乱しました。継承されたクラスの新しいオブジェクトを作成すると、基本クラスのオブジェクトが作成されますか?

子クラスコンストラクタから基本クラスコンストラクタを呼び出すと、 ベースクラスオブジェクトが作成されますか?

+3

基本クラスからメンバを継承/初期化するには、まずベースコンストラクタを呼び出し、次に子コンストラクタを呼び出します。最終的に、あなたの子クラスのインスタンスは、基本クラスのインスタンスでもあると言われます(つまり、関係です)。 –

+2

いいえ、*オブジェクトが1つしか作成されません。コンストラクタは、現在のオブジェクト(子クラスのインスタンス)に対してそのロジックを実行する単純な「設定メソッド」と考えることができます。 – Rob

答えて

1

いいえ基本クラスのオブジェクトは作成されません。継承されたクラスのオブジェクトは、保護レベルに応じて基本クラスのプロパティにアクセスできます。特定のメンバー(継承されたクラスで使用可能)は初期化されるだけで、基本クラスのオブジェクトは作成されません。

1

オブジェクトは1つしか作成されませんが、基本クラスのプロパティと動作、および継承されたクラスのプロパティと動作の2つの「レイヤー」があります。したがって、ある意味では、「はい、基本クラスオブジェクトが作成されます」(そのオブジェクトは他の基本クラスオブジェクトと同じプロパティと動作を持ちます)が、継承クラスと同じオブジェクトなので、「いいえ基本オブジェクトは作成されていません。 "主な違いは「また」です。

1つのオブジェクトが2つの異なるもの(またはそれ以上)であるように見えるという事実は、オブジェクトの向きの中心にあります。それは、それを強力かつ複雑にするものです。

0

いいえ、そうしないと、基本クラスのオブジェクトは作成されません。子クラスのオブジェクトが作成されると、子クラスのコンストラクタを呼び出す前でも、基本クラスのコンストラクタが自動的に呼び出されるため、子クラスから基本クラスのコンストラクタを呼び出す必要はありません。

一般的に、実際のタスクが子クラスによって開始される前に、基本クラスコンストラクターがバックグラウンドでいくつかのタスクを実行するために使用されます。

関連する問題