2016-03-31 27 views
0

私はプログラミングに新たなんだと、このクラスのものがで私の頭をやっている間違ったオーバーライドが呼び出されましたか?

ここに私のコードは(タイプはユーザ入力に基づいている)である

public static Account CreateAccount(int type) 
{ 
    switch (type) 
    { 
     case 1: 
      SaveAcc savings = new SaveAcc(); 
     break; 

     default: 
      Console.WriteLine("No such choice"); 
     break; 

    } 
    return new Account(); 
} 

これらは私のクラスです:。

class Account 
{ 
    protected int balance; 
    protected int accountnr = 1; 
    protected bool credit; 

    public Account() 
    { 
     newNr++; 
     accountnr = newNr; 
    } 

    public override string ToString() 
    { 
     return "AccNr: " + Nr.ToString("G") + ", balance: " + balance.ToString("C"); 
    } 
} 

class SaveAcc: Account 
{ 
    public int rate; 
    public SaveAcc() 
    { 
     credit = true; 
     rate = 0.03; 
    } 

    public override string ToString() 
    { 
     return "AccNr: " + Nr.ToString("G") + ", balance: " + balance.ToString("C") + credit.ToString(); 
    } 
} 

SavAccオブジェクトを作成するときに、「間違った」オーバーライドが呼び出されています。私の目標は、SavAcc継承クラスにあるoverride ToStringメソッドによって与えられたすべての情報を表示することです。私は明白な何かを欠いていますか

+0

どこ 'SavAcc'がありますか? 'SaveAcc'とは何ですか?あなたはそれをどこで呼びますか? – leppie

+0

Typo、SalAccはSaveAcc @leppie – 153qa

+2

とします。大文字と小文字の区別はありません。あなたはおそらく意味します。 – leppie

答えて

0

変更この:これに

switch (type) 
{ 
     case 1: 
      SaveAcc savings = new SaveAcc(); 
     break; 

     default: 
      Console.WriteLine("No such choice"); 
     break; 

} 
return new Account(); 

switch (type) 
{ 
    case 1: 
     return new SaveAcc(); 
    default: 
     Console.WriteLine("No such choice"); 
     return new Account(); 
} 
+0

ありがとう、なぜ休憩が必要なのですか? – 153qa

+1

'break'はスイッチに次のケースに「落ち込まない」ことを知らせます。 'return'はメソッド全体をすぐに終了させるので、スイッチを実行し続けることはできないので、' break'を含めることでそれを防ぐ必要はありません –

+0

素晴らしい、すばらしい答えをありがとう – 153qa

関連する問題