1

私はC#で宿題をしていて、Accountの抽象クラスを実装しています。次に、SavingAccountとCheckingAccountという名前のAccountから2つのクラスを派生させ、派生クラスのいくつかのメソッドをオーバーライドします。今私の問題の声明は言う

アカウントの参照を通じてのみSavingAccountとCheckingAccountをインスタンス化します

単純なオブジェクトの作成は知っているが、オブジェクトの参照を介してオブジェクトを作成する方法がわからないため、このコードを記述できません。構文を教えてください。ありがとう

4

2 に答える 2

5

アイデアは、識別子を基本タイプにすることができるということです。

SomeBaseType identifier;

ただし、インスタンス化する(またはインスタンスを新規作成する)場合は、任意の派生型を使用できます

例えば

Account account = new SavingsAccount();

編集私はこれがOOPが生き返るところだと付け加えたかった(「本当に楽しくなる!」を読んでください)。interfaceこれで、またはコントラクト(Accountクラスなど)を設計し、1つの設計にプログラムすることができます。ただし、実際に使用されているアカウントの種類は異なる場合があります。私が与えた例では、accountはのように見え続けますAccount。の「新しい」メソッドまたは機能は、変数SavingsAccountを使用してコーディングするためにすぐに表示されるわけではありません。accountしかし、それは大丈夫です!コードを(ほとんどの場合)特別に調整するのではなく、代わりに、の基本的で一般的な機能を表すことができるSavingsAccountフレキシブルを設計する必要があります。AccountAccount

于 2012-04-18T22:45:01.920 に答える
0

すでに持っているアカウントのインスタンスからSavingAccountまたはCheckingAccountを作成する場合はas、それらのアカウントの1つをキャストできます。そのようです -

int _accountID = 356;
Account _account = new SavingsAccount(_accountID);

// now to create a SavingAccount or CheckingAccount from _account

SavingAccount _savingAccount = _account as SavingAccount;
于 2012-04-18T22:52:36.187 に答える