2016-03-31 6 views
0

Я новичок в программировании и этот класс-вещи делают мою голову вНеверное переопределение называется?

Вот мой код (тип основан на 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, вызывается «неправильное» переопределение. Моя цель - отобразить всю информацию, предоставленную переопределяющим методом ToString, расположенным в унаследованном классе SavAcc. Мне что-то не хватает?

+0

Где 'SavAcc'? Что такое 'SaveAcc'? Где вы это называете? – leppie

+0

Typo, SalAcc должен быть SaveAcc @leppie – 153qa

+2

ОК, в 'case 1' вы никогда не возвращаете созданный экземпляр. Вы, наверное, хотели. – 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