2015-12-25 120 views
-1

我有一個類Player.java,它擴展了Entity.java。在實體中,我定義了x和y座標。在Game.java中,我創建了一個玩家對象:Player player = new Player(0, 0);。 Entity.java中x和y變量的可見性應該是什麼?我不想直接在Game.java中設置它們,但是如果我將它們設置爲私有,則無法從子類Player.java訪問它們。我應該在Entity.java中創建getter和setter,並且當我需要Player.java類中的x和y時,請調用這些方法?這意味着我每次需要Player.java中的x和y來計算一些我需要調用getter和setter的東西。父類中類變量的可見性

Main.java

Player player = new Player(0,0); 

Player.java

public Player(int x, int y) { 
    super(x, y); 
} 

Entity.java

private/public int x; 
private/public int y; 

public Entity(int x, int y) { 
    this.x = x; 
    this.y = y; 
} 
+1

你可以讓它們成爲'protected'。 –

+0

謝謝埃裏克G –

回答

2

如果你想在你Entity類的責任,使性能私人。使protected獲得者和制定者。這種方式Player可以間接訪問x和y屬性,並且Game類無法設置訪問這些屬性,因爲protected獲取者和設置者。

+0

保護所有兒童元素的顯示變量,並且對所有外部元素都是不可見的 – Tabetha

+1

也許我錯誤地處理了這個問題,但我認爲這就是這種情況下想要的行爲'我不想直接設置它們在Game.java'中。 –

+0

我不確定如果玩家是實體的孩子,遊戲是實體的孩子,兩者都不是,但是在另一個閱讀後不清楚:)所以也許我們理解對 – Tabetha

1

您可以同時設置protected和剛剛使用子類中的super.x ; super.y ;進行訪問。 最好的辦法是不要使用setter和getters(Object programming)