在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));
}
}
private表示一个类的私有属性,只能在本类中访问到,在其他的类中无法进行访问。private的访问控制是针对类来检查的,而非对象。
对象本身肯定能访问自己本身所有属性,包括私有属性,不然,还在要这些属性干嘛?
同学,本类中你可以无视访问权限修饰词。 记住是本类!
private是私有权限,无法通过对象+属性即abc.a来引用。
如果想要比较,使用getter方法,在Demo类中加入
public int getNum(){
return num;
}
//比较
d1.com(d2.getNum());
举个例子解释,私有私有,就是自己有,自己有的东西自己当然能访问;
private的作用域就是把这个属性限制在本类对象里面,对象是类的具体实现,就像小明这个人是Farther这个类的具体体现,他有权保护自己的小秘密(隐私),而继承了Farther类的Son类也无法访问父亲的小秘密