gpt4 book ai didi

java - java中的私有(private)实例和getter可见性

转载 作者:行者123 更新时间:2023-12-03 01:31:35 30 4
gpt4 key购买 nike

感谢大家修复格式等,这里是全新的

我最近开始学习java,在一次练习中出现了一个问题,抱歉,如果我错过了发布规则:

为了计算从一个 MyPoint 到另一个 Mypoint 的距离,我决定对 MyPoint another 使用 getter,因为 another 的 x 和 y 应该是私有(private)的并且不能是私有(private)的用于点操作(another.x another.y);

public class MyPoint {
private int x;
private int y;

public int getX() {
return x;
}

public int getY() {
return y;
}

public double distance(MyPoint another) {
int xDiff = this.x - another.getX(); //getter
int yDiff = this.y - another.getY(); // getter

return Math.sqrt(xDiff * xDiff + yDiff * yDiff);
}
}

public class TestMyPoint {
public static void main(String[] args) {
MyPoint a = new MyPoint(3,0);
MyPoint b = new MyPoint(0,4);

System.out.println(a.distance(b)); // this works fine;
}
}

但是,如果我返回代码并将 another.getX() 更改为 another.x,代码仍然有效。 y 也一样。

public class MyPoint {
private int x;
private int y;

public MyPoint(int x, int y) {
this.x = x;
this.y = y;
}

public int getX() {
return x;
}
public int getY() {
return y;
}

public double distance(MyPoint another) {
int xDiff = this.x - another.x; //no getter
int yDiff = this.y - another.y; //no getter

return Math.sqrt(xDiff * xDiff + yDiff * yDiff);
}
}


public class TestMyPoint {
public static void main(String[] args) {
MyPoint a = new MyPoint(3,0);
MyPoint b = new MyPoint(0,4);

System.out.println(a.distance(b)); // this still works fine;
}
}

我认为,由于 another 是一个 MyPoint 类,并且实例 x 和 y 是私有(private)的,因此 .x 和 .y 无法工作,这就是设置实例私有(private)并使用 setter/getter 。

我错过了什么?

最佳答案

private 表示只能从 MyPoint 内部访问这些字段。这并不意味着只能通过 MyPoint同一个实例访问它们。对于在“其他”实例上操作的方法(尤其是 equalscompareTo)来访问同一类的其他实例中的私有(private)状态是完全合法的。

关于java - java中的私有(private)实例和getter可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18439476/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com