2012-04-18 9 views
1

私はC#で抽象クラスを実装しています。アカウントの保存と勘定確認の2つのクラスから派生クラスのいくつかのメソッドをオーバーライドします。今、私の問題文はオブジェクトの参照を介してオブジェクトを作成する

は、今私は、私は単純なオブジェクトの作成を知っているので、こののコードを書くことができませんアカウントの参照を通じて

だけインスタンス化SavingAccountとCheckingAccountを言いますが、私は作成する方法がわかりませんオブジェクトの参照を介してオブジェクト。構文を教えてください。ありがとう

+1

これらの人は同じクラスですか? hehe http://stackoverflow.com/questions/10218686/cannot-call-an-abstract-member/10218831#10218831 – payo

+0

私は同じ人です:) – Billz

+0

私はpayoが言ったことはあなたの課題が探していると思います。しかし、あなたの説明の文言はやや奇妙です。その文は「アカウントの参照によってSavingAccountとCheckingAccountのみをインスタンス化する」という代入文を引用していますか、言い換えればわかりますか? – Thomas

答えて

5

アイデアは識別子が基本型にできることである。

SomeBaseType identifier; 

しかし、あなたは(インスタンスまたは新しいアップ)、それをインスタンス化するとき、あなたはどの派生型

例えばを使用することができます

Account account = new SavingsAccount(); 

私は、これは(読み: "!本当に楽しい取得")OOPが生活に入るところであることを追加したいEDIT。今すぐinterfaceまたは契約書(Accountクラスなど)を設計し、1つのデザインにプログラムすることができます。しかし、実際にの異なるアカウントタイプを使用することがあります。私が与えた例では、accountは引き続きAccountのように見えます。 SavingsAccountの「新しい」方法や機能は、account変数を使用しているコードに対して直ちに表示されません。しかしそれは大丈夫です!コードを具体的にSavingsAccount(MOSTの場合)に調整しないようにするには、Accountの基本的な共通機能を表す柔軟なAccountを設計します。

0

既にアカウントのインスタンスからSavingAccountまたはCheckingAccountを作成する場合は、asアカウントをキャストできます。ように -

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

// now to create a SavingAccount or CheckingAccount from _account 

SavingAccount _savingAccount = _account as SavingAccount; 
+0

説明によると、アカウントは抽象です。抽象クラスをインスタンス化することはできません。 – Thomas

+2

編集中のFTFY – payo

+0

@Thomasはそれを指摘してくれてありがとう。私は不在だった:)(それは英国で遅くなっている)。 –

関連する問題