Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 父类中类变量的可见性_Java_Oop_Inheritance_Visibility_Getter Setter - Fatal编程技术网

Java 父类中类变量的可见性

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.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.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中直接设置它们”。我不确定玩家是实体的孩子,游戏是实体的孩子,两者都是或都不是,这在另一次阅读后还不清楚:)所以也许我们理解正确,你可以让他们受到保护。