2014-01-09 175 views
0

假設你有以下設計:訪問父類對象屬性的

ClassA 

ClassC 

ClassB 
    Property: object of type ClassA 
    Property: object of type ClassC 

如果ClassBClassA類型的對象,有沒有什麼辦法了ClassA能夠訪問ClassB成員?換句話說,有一種方法ClassA(說ClassA.GetVegetables()),但ClassA方法需要訪問ClassBClassC類型的屬性,這是可能的嗎?

+1

沒有這個設置,沒有。你將不得不重構你的設計。什麼阻止你將它作爲一個參數傳遞? –

+0

@JeroenVannevel這不是多餘的?我的意思是,你將不得不基本調用'ClassBobj.ClassAprop_obj.GetVegetables(ClassBobj.ClassCprop_obj)'。 – user3175663

+0

是的,你必須提供一些ClassA實例的ClassA訪問。 void ClassA.GetVegitables(ClassB argumentName)。然後在ClassB中做PropertyA.GetVegitables(this); – Thraka

回答

0

沒有看到任何輔助代碼,最好的方法是隻需將所需的信息作爲參數傳遞給您的方法。

理想情況下,您應該傳遞所有必需的數據作爲參數,以使方法非常獨立,而不依賴於某種全局狀態。

這是假定目前的設計是最優的;這可以通過改變設計細節來解決,但是如果沒有看到更多的代碼,我們就無法說清楚。

0

看起來你混合2個概念一起:

  • 引用的對象的實例
  • 允許獲取成員/方法/對象的屬性

無論是否ClassA的可請致電任何 ClassB的方法取決於ClassA是否具有對ClassB(第一個概念)的引用。這可以通過將ClassB的實例傳遞給ClassA的構造函數來實現。

一旦ClassA具有對ClassB實例的引用,它只能訪問標記爲public的ClassB方法。查找access modifiers以獲取更多信息。