2015-05-06 51 views
1

我有一個類繼承另一個類的類列表。我希望能夠訪問父變量,而不必使用引用(使事情更具可讀性)。我可以在沒有參考的情況下訪問父變量嗎?

public class MyCode : OtherCode 
    { 
     public string label; 
     public MyCode() 
     { 
      label = "somestring"; 
      colour = 5; 
      Console.WriteLine("colour is: " + colour); // this is ok 
      List<particle> parts = new List<particle>(); 
      parts.Add(new particle()); 
     } 

     public class particle //I'd like this class to have access to the parent variables 
     { 
      public particle() 
      { 
       Console.WriteLine("The colour is: " + colour); // can this be accessed without using a parent reference? 
       //Console.WriteLine("The label is: " + label); // unaccessable 
       Console.ReadLine(); 
      } 
     } 
    } 

    public class OtherCode 
    { 
     public int colour = 1; 
     public OtherCode() 
     { 
      //I didn't do it 
     } 
    } 

是否有可能繼承父變量這種方式,所以我可以用手把它「是」在粒子的方法呢?

爲這個令人困惑的例子道歉,我想我因爲在這種情況下可以使用繼承而鬆了口氣。 我想知道是否可以讓嵌套類(粒子)有權訪問標籤和顏色在施工中傳遞參考文獻並在全國各地使用Parent.variable

+0

'粒子'不是'咖啡',因此它不應該有'風味'或任何一個概念,要麼做一個界面,要麼讓'杯子'有'味道'(儘管我不是確定一個杯子是美味的) – Sayse

+1

你正在使用繼承錯誤,就像@Sayse提到的(繼承意味着「is-a」,咖啡肯定是地獄不是杯子),你的問題還不清楚。解釋你想看到發生的事情,而不是「讓更多的可讀性」。 – CodeCaster

+0

對不起,但我認爲你有些事情倒退了。 「咖啡:杯子」並不是說沒有杯子就沒有咖啡。因爲沒有杯子就可以喝咖啡。你說這個的方式說咖啡是一種特定的杯子。它不是。 Cappucino是一種咖啡,一種杯子可以翻譯成「Cappucion:Coffee」和「Mug:Cup」。 所以我認爲你應該解決這個問題,並在整個OOP閱讀,然後你的問題的答案會來找你:) –

回答

1

這是我的規則,以確定何時使用繼承。

嘗試描述問題並確定句子中的動詞。

例如,這裏的正確句子是什麼?

因此,你不能使用繼承,因爲懶惰或任何其他。每個概念都有其用例,避免變量/財產聲明不是繼承的目標。

+0

有道理,我希望避免必須通過父項並在任何地方都有Parent.var。 – Catnaps909

+0

@ Catnaps909我相信你應該創建一個新的編程範例! OOP將無法正常工作:P –

+0

哈哈,是的,我還在學習。我剛剛發現擁有父母是不可讀的。在所有事情的前面,想知道是否有更簡單的方法。 – Catnaps909

相關問題