我今天突然发现一个不可能的问题,但的确是发生了
public class Person {
private String name; public Person(String name) {
this.name = name;
} public boolean equals(Person p) {
System.out.println(p.name);//正常运行
return p.name.equals(this.name);
} public static void main(String[] args) {
Person p1=new Person("black");
Person p2=new Person("white"); p1.equals(p2);
}
}
按我的理解,name是private的,是不可能被访问到的,结果就是能访问,神啊,这是怎么回事。
public class Person {
private String name; public Person(String name) {
this.name = name;
} public boolean equals(Person p) {
System.out.println(p.name);//正常运行
return p.name.equals(this.name);
} public static void main(String[] args) {
Person p1=new Person("black");
Person p2=new Person("white"); p1.equals(p2);
}
}
按我的理解,name是private的,是不可能被访问到的,结果就是能访问,神啊,这是怎么回事。
System.out.println(p.name);//正常运行
这个很容易理解,private是私有的,类本身当然可以访问,
set,get方法只是提供外部接口而已,给别的类访问的,你的老婆你难道不能用吗?就是这样
感觉你基础知识 要多补补。。private,public,protected就是修饰类的,不是对象,按你的说法那么多对象
这三个关键字如何够用,over!
private:只能在相同类中被访问
publicboolean equals(Person p) {
System.out.println(p.name);//正常运行return p.name.equals(this.name);
}equals 属于Person类的方法 P是Person类的实例 你说一个类的方法能不能访问他的私有属性呢 肯定能
如果不能 那还有谁能访问类的私有属性啊
记住方法不是哪一个实例具体拥有的 他是一个类的所有实例说共享的
public protected 默认的 private
他们的相同与不同 这可是非常重要的
不然你的工程一旦做大 将让你脑袋混乱无比
书上说的private变量不能访问是指外部类不能“直接”访问
类中定义成员变量为private,定义方法为public,目的就是提供公有的方法去访问,修改私有的成员变量
访问修饰符 同类 同包 不同包 不同包的子类
public y y y y
default y y
protected y y y
private y
这是访问权限的图示
自己看下吧
而不是对象内私有.这个错误我也犯过,你再好好想想吧
一直以为private只能被本类本对象使用。