2017-01-15 9 views
1

Toppingクラスから2つのタイプ、通常のToppingクラス、Toppingから継承し、SpiceLevelを呼び出すSpicyToppingを追加すると問題が発生します。継承されたクラス内の変数を設定する

//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; 

私はこれをしなければならない理由を私は理解していない

私の問題は、私はSpicyToppingオブジェクトを作成するたびに、SpiceLevelが0に設定されていることであり、私は手動でオブジェクトを作成した後、それを設定する必要がありますコンストラクタが正しく設定されていると思うので、

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を大文字にしました。

関連する問題