加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

在Java中修改私有实例变量

发布时间:2020-12-14 23:36:38 所属栏目:Java 来源:网络整理
导读:参见英文答案 Java Private Field Visibility6个 所以,我在一本Java书中发现了一个例子: public class Account { private String name; private double balance; private int acctNumber; public Account(){} public boolean equals(Account anotherAcc) {
参见英文答案 > Java Private Field Visibility6个
所以,我在一本Java书中发现了一个例子:
public class Account {
    private String name;
    private double balance;
    private int acctNumber;

    public Account(){}

    public boolean equals(Account anotherAcc) {
        return (this.name.equals(anotherAcc.name)
                && (this.balance == anotherAcc.balance) && (this.acctNumber == anotherAcc.acctNumber));

    }


}

我们看到equals方法被重载并与另一个Account对象一起传递以检查所有实例变量是否相等.我对这段代码的问题在于,我们认为我们直接访问另一个对象中的私有变量,这似乎不对,但它确实有效.当我在同一个类中创建一个main方法时,我会以某种方式访问??私有变量.

相反,当我在另一个类中创建一个main方法时,才会出现可见性错误.我的问题是,为什么Java允许在方法中传递的对象中访问私有实例变量?是因为该对象是Account类型,并且传递给的方法是名为Account的类的一部分?

解决方法

看(我最喜欢的桌子) Controlling Access to Members of a Class:
Modifier    Class   Package Subclass  World
-------------------------------------------
public      Y       Y       Y         Y
protected   Y       Y       Y         N
no modifier Y       Y       N         N
private     Y       N       N         N  
            ↑
       You are here

由于您在同一个班级,私人会员可用.

如评论中所述,请注意您没有覆盖正确的equals方法.原始的(Object类),期望Object类型的对象作为参数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读