2016-04-14 142 views
-1

我目前在棋盤遊戲用java的工作,而且我有一個關於面向對象究竟是如何能在這種情況下問題:眼下我需要一些幫助理解OOP

,我有兩個對象:

  1. 遊戲棋盤對象
  2. 贏對象,需要在遊戲板上的對象在其構造

兩個對象在我的主要方法開始被實例化。

遊戲板對象將是活動的,其中所有棋子來回移動並被銷燬。

每次移動完成後,Win對象將檢查當前玩家是否贏得了比賽。

現在的問題是:

請問傳遞到在 贏對象開始更新作爲主要方法活動板對象板對象?

public static void main(String[] args){ 

    Matrix m = new Matrix(); 
    Win w = new Win(m); 
+4

嗯,我想你的問題的一個簡單的答案是...試試看:P。 – 3kings

+2

是的,它會更新。不知道爲什麼你需要Win對象。我認爲在這種情況下,最好向董事會詢問是否有贏家或者是誰,而不是這種方式。也許我錯了。 – Rig

+0

我發表了一些東西很有趣,幾秒鐘後,我想到一種方法來自己回答問題並實際回答問題。不過謝謝你們! –

回答

1

這甚至不是一個OOP的問題,這是基本的Java。因爲java在內存中存儲了對象的引用(指針,這就是爲什麼它被稱爲NullPointer),如果你有對象A和B引用相同的內存位置,並且你更新A-s值,那麼B-s值也會被更新。

當您在另一個對象(對象A = B)中複製一個對象時,您只複製一個內存地址。

+0

謝謝你的回答!這個解釋非常有幫助。但是我想我對基本Java語言和OOP之間的區別還是有點困惑。兩者之間有很大的區別嗎?我認爲Java本身就是一種面向對象的編程語言。 –

+0

@ JasonJ.Y.Kim Java只是一種面向對象的編程語言。你可以用C++或Python或許多其他語言進行OOP。 –

+0

@Jason J.Y. Kim當我說「基本的java」時,我會談論核心語言,而沒有任何像內置庫或適當的OOP這樣的花哨的東西。你可以像「這個問題不直接與Java的OOP功能直接相關」那樣閱讀它 –

-1

贏不是一個對象!贏是一種行動a.k.a的一種方法!爲你的遊戲的一些對象:

  • 遊戲
  • 球員
  • 控制檯
+0

呃,從技術上說,這是一個名爲Win的類的對象實例。 –

+0

嗯?你想要「贏得應該成爲一種方法」嗎?另外,控制檯?爲什麼?爲什麼? –

+0

當然,您可以創建一個名爲Walk的類並將其實例化爲一個對象,但是從OOP的角度來看,對象不是動作! –