Java 父类中类变量的可见性
我有一个类Player.java,它扩展了Entity.java。在实体中,我定义x和y坐标。在Game.java中,我创建了一个player对象:Java 父类中类变量的可见性,java,oop,inheritance,visibility,getter-setter,Java,Oop,Inheritance,Visibility,Getter Setter,我有一个类Player.java,它扩展了Entity.java。在实体中,我定义x和y坐标。在Game.java中,我创建了一个player对象:player=newplayer(0,0)。Entity.java中x和y变量的可见性应该是什么?我不想直接在Game.java中设置它们,但是如果我将它们设置为私有,我就无法从子类Player.java访问它们。我是否应该在Entity.java中创建getter和setter,并在Player.java类中需要x和y时调用这些方法?这意味着每次我
player=newplayer(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;
}
如果您想在实体
类中承担责任,请将属性设置为私有。使受保护
getter和setter。通过这种方式,玩家
可以间接访问x和y属性,游戏
类不能设置访问这些属性,因为受保护的
获取者和设置者。您可以设置受保护的
并且只需使用super.x;超级y代码>从子类访问。
最好不要使用setter和getter(对象编程)protected show variable to all children元素,并且对所有外部元素都不可见。可能我理解不正确,但我认为这是本例中想要的行为“我不想在Game.java中直接设置它们”。我不确定玩家是实体的孩子,游戏是实体的孩子,两者都是或都不是,这在另一次阅读后还不清楚:)所以也许我们理解正确,你可以让他们受到保护。