我已经写了几年Java了,但我仍然不明白为什么这个简单的示例类实际上通过了编译。在这种情况下,我会为 myInt 制作一个getter方法,并使用该方法从我的 compareTo中的 o 中获取 myInt 方法,因为 myInt 被声明为私有。有人可以告诉我为什么这是一种合法的方式来访问 o myInt ?
public class B implements Comparable<B> {
private int myInt = 0;
public int compareTo(B o) {
return myInt-o.myInt;
}
}
提前致谢!
答案 0 :(得分:3)
答案 1 :(得分:1)
根据Java API:
private修饰符指定只能在自己的类中访问该成员。
因为班级总是可以访问自己的成员。您的代码是允许的,它不会给出编译错误。
看看这个(将B改为C):
class B implements Comparable<B> {
private int myInt = 0;
public int compareTo(C o) {
return myInt-o.myInt;
}
}
class C
{
private int myInt = 0;
}
如果您尝试将B
更改为C
(另一个类)。它会给你编译错误。