同一个类产生的两个对象能访问私有数据吗?

在comf方法中,this.num==d.num;为什么d能访问自己的num值呢?不是私有了吗?

class Demo {

private int num;
Demo(int num){
    this.num=num;    
}

public boolean com(Demo d){
    
        return this.num==d.num;

}

}
class Test {

public static void main(String[] args){
    Demo d1 = new Demo(22);
    
    Demo d2 = new Demo(33);
    
    System.out.println(d1.com(d2));
}

}

阅读 4k
5 个回答

private表示一个类的私有属性,只能在本类中访问到,在其他的类中无法进行访问。private的访问控制是针对类来检查的,而非对象。

举个例子解释,私有私有,就是自己有,自己有的东西自己当然能访问;
private的作用域就是把这个属性限制在本类对象里面,对象是类的具体实现,就像小明这个人是Farther这个类的具体体现,他有权保护自己的小秘密(隐私),而继承了Farther类的Son类也无法访问父亲的小秘密

private是私有权限,无法通过对象+属性即abc.a来引用。
如果想要比较,使用getter方法,在Demo类中加入

public int getNum(){
    return num;
}
//比较
d1.com(d2.getNum());

对象本身肯定能访问自己本身所有属性,包括私有属性,不然,还在要这些属性干嘛?

同学,本类中你可以无视访问权限修饰词。 记住是本类!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题