2017-01-15 3 views
1

У меня проблема, когда у меня есть два типа классов Topping, обычный класс «Topping» и тот, который наследуется от Topping и добавляет SpiceLevel, называемый «SpicyTopping».Установка переменной в унаследованном классе

Моя проблема заключается в том, что всякий раз, когда я создаю объект SpicyTopping, то SpiceLevel установлен в 0, и я должен вручную установить его после построения объекта

//Objects 
      Topping Mozzarella = new Topping("Mozzarella", 0.40f); 
      Topping Ham = new Topping("Ham", 0.60f); 
      Topping Eggs = new Topping("Eggs", 0.70f); 
      Topping Salmon = new Topping("Salmon", 0.98f); 
      Topping Tuna = new Topping("Tuna", 0.80f); 
      Topping Garlic = new Topping("Garlic", 0.20f); 
      Topping Beef = new Topping("Beef", 0.90f); 
      Topping Chicken = new Topping("Chicken", 0.95f); 
      SpicyTopping SweetChiliPeppers = new SpicyTopping("Sweet Chili Peppers", 0.31f, 1);//Mild 
      SpicyTopping CayenneChiliPeppers = new SpicyTopping("Cayenne Chili Peppers", 0.32f, 2);//Moderate 
      SpicyTopping HabaneroChiliPeppers = new SpicyTopping("Habanero Chili Peppers", 0.33f, 3);//Ferocious 
      SweetChiliPeppers.ToppingSpiceLevel = 1; 
      CayenneChiliPeppers.ToppingSpiceLevel = 2; 
      HabaneroChiliPeppers.ToppingSpiceLevel = 3; 

Я не понимаю, почему я должен это сделать как я думаю, конструктор установлен правильно

namespace AnotherTest 
{ 
    public class Topping 
    { 
     //Private Variables 
     private string toppingName; 
     private float toppingPrice; 

     //Properties 
     //Topping Name 
     public string ToppingName 
     { 
      get { return toppingName; } 
      set { toppingName = value; } 
     } 

     //Topping Price 
     public float ToppingPrice 
     { 
      get { return toppingPrice; } 
      set { toppingPrice = value; } 
     } 

     //Constructor 
     public Topping(string toppingName, float toppingPrice) 
     { 
      ToppingName = toppingName; 
      ToppingPrice = toppingPrice; 


     } 
    } 

    class SpicyTopping : Topping 
    { 
     //Private Variables 
     private int toppingSpiceLevel; 

     //Properties 
     public int ToppingSpiceLevel 
     { 
      get { return toppingSpiceLevel; } 
      set { toppingSpiceLevel = value; } 
     } 
     //Constructor 
     public SpicyTopping(string toppingName, 
          float toppingPrice, 
          int ToppingSpiceLevel) 
       : base(toppingName, toppingPrice) 
     { 
      ToppingName = toppingName; 
      ToppingPrice = toppingPrice; 
      ToppingSpiceLevel = toppingSpiceLevel; 
     } 
    } 
} 

В чем проблема? Спасибо за помощь

ответ

3

В вашем конструкторе у вас есть переменные, определенные неверно.

ToppingSpiceLevel = toppingSpiceLevel; 

Должно быть:

toppingSpiceLevel = ToppingSpiceLevel; 

Свойство ToppingSpiceLevel является то, что вы используете, чтобы выставить долива уровень специй, однако приватную переменную toppingSpiceLevel должен быть правильно установлен на уровне конструктора, как показано выше ,

+1

Dammit, 55 секунд :) – Skrrp

+0

Я полностью его не замечал, большое спасибо – MarsBars9459

+0

@ MarsBars9459 - без проблем, рад помочь :) –

0

В определении вашего конструктора вы использовали ToppingSpiceLevel.

Смежные вопросы