You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 16:03:07