2011-12-15 52 views
0

之間溝通我有2類A和B.使用接口,2 Java類

class A implements Constants{

private int state; 

}

class B implements Constants{ 
foo(){ 
    //want to set state variable of class A like this 
    state = state1 
} 

} 
interface Constants{ 
public final int state1; 
public final int state2; 
} 

我不希望我怎麼做這在B級的A類的實例? 如果我有一個函數來設置接口中的變量,那麼這兩個類都必須實現這個函數。這將是錯誤的權利?因爲那麼相同函數的2個定義會衝突?

+4

問題還不清楚。你想讓B延伸A嗎? – Thilo 2011-12-15 07:06:06

回答

1

在java中沒有什麼叫做函數。他們是方法。

你可以在你的類中有getter和setter來設置屬性並從外部類中獲取它們。

你的問題還不清楚。

如果您的B類擴展A類,然後通過B類的構造函數,則可以設置超類A類的屬性。

希望它有幫助!

+0

沒有課程延伸其他。 – Namratha 2011-12-15 08:39:31

0

擁有一個接口並不意味着變量將在類之間共享,它更多的是定義必須覆蓋接口中的函數的類的方法。你可以閱讀它們的基礎知識here。要在兩個類之間共享一個變量,可以將變量設置爲static,並將它放在另一個類中,這兩個類都可以擴展(實際上是一個全局變量,這是不好的練習,而不是線程安全的),或者讓其中一個類具有另一個實例並調用getter/setter。

編輯:有一個類似的問題here,它顯示了我對靜態變量的意義。

0

您通常希望避免在試圖改變另一個類的內部狀態的類中編寫任何方法。無論你想出什麼樣的技巧來完成這樣的事情,你都打破了封裝原則,這是首先使用類的全部原因。

如果有一些狀態希望可以從多個類訪問,我建議將該狀態分解到它自己的類中,並讓這兩個類中的每一個都通過getter/setter或實用程序方法與其交互。