Java疑问:同类方法访问私有变量与返回类型无关?为何可行?
问题解答
1. 为什么同类的方法可以访问另一个对象的私有变量?
Java中私有(private)成员的访问权限是基于类的,不是基于对象的。也就是说,只要是同一个类中的方法,不管是当前对象(this)还是同类型的其他对象,都可以直接访问该类的私有成员。
拿你的代码举例:Apartment类的priceDifference方法里,compared是另一个Apartment对象,但因为它和当前方法同属Apartment类,所以你能直接调用compared.princePerSquare,这完全符合Java的访问规则,不是编译器的疏漏。
2. 为什么会误以为这与返回类型(int/boolean)有关?
这只是巧合导致的误解。你第一次实现largerThan(返回boolean)时用了getter,后来实现priceDifference(返回int)时直接访问了私有变量,刚好返回类型不同,但这两者没有任何关联。
返回类型仅仅定义了方法返回值的类型,和成员变量的访问权限逻辑完全无关。你可以把largerThan的返回类型改成int,同时直接访问compared.squares,代码依然能正常编译运行——这就说明返回类型不影响私有成员的访问权限。
验证示例
把你的largerThan方法改成下面这样,依然能正常运行:
public int largerThan(Apartment compared) { return this.squares - compared.squares; // 直接访问compared的私有变量squares }
注:你提到的变量名princePerSquare是课程预设,这个不影响核心逻辑。
内容的提问来源于stack exchange,提问作者cubi11
相关产品推荐
相关产品推荐

