所以,我在一本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));
}
}
Run Code Online (Sandbox Code Playgroud)
我们看到equals方法被重载并与另一个Account对象一起传递以检查所有实例变量是否相等.我对这段代码的问题在于,我们认为我们直接访问另一个对象中的私有变量,这似乎不对,但它确实有效.当我在同一个类中创建一个main方法时,我会以某种方式访问私有变量.
相反,当我在另一个类中创建一个main方法时,才会出现可见性错误.我的问题是,为什么Java允许在方法中传递的对象中访问私有实例变量?是因为该对象是Account类型,并且传递给的方法是名为Account的类的一部分?
Mar*_*oun 10
请参阅(我最喜欢的表)控制对类成员的访问:
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
Run Code Online (Sandbox Code Playgroud)
由于您在同一个班级,因此可以使用private会员.
如评论中所述,请注意您没有覆盖正确的equals方法.原始的(Object类),期望一个类型的对象Object作为参数.
| 归档时间: |
|
| 查看次数: |
1011 次 |
| 最近记录: |