被称为错误的覆盖?

时间:2016-03-31 20:33:58

标签: c# override inherited

我是编程的新手,这个课程正在努力。

这是我的代码(类型基于userinput)

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方法给出的所有信息。我错过了一些明显的东西吗?

1 个答案:

答案 0 :(得分: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();
}