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 継承クラスにあるオーバーライド ToString メソッドによって提供されるすべての情報を表示することです。明らかな何かが欠けていますか?

4

1 に答える 1

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();
}
于 2016-03-31T20:44:02.383 に答える