我今天突然发现一个不可能的问题,但的确是发生了
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的,是不可能被访问到的,结果就是能访问,神啊,这是怎么回事。

解决方案 »

  1.   


    System.out.println(p.name);//正常运行
    这个很容易理解,private是私有的,类本身当然可以访问, 
    set,get方法只是提供外部接口而已,给别的类访问的,你的老婆你难道不能用吗?就是这样 
      

  2.   

    楼主你有必要去看看 对象与类的关系,再来看这个题目 
    感觉你基础知识 要多补补。。private,public,protected就是修饰类的,不是对象,按你的说法那么多对象
    这三个关键字如何够用,over!
      

  3.   

    lz 搞清一个概念就行啦:
    private:只能在相同类中被访问
      

  4.   

    神啊,就是怎么回事。
    publicboolean equals(Person p) {
            System.out.println(p.name);//正常运行return p.name.equals(this.name);
        }equals 属于Person类的方法  P是Person类的实例 你说一个类的方法能不能访问他的私有属性呢 肯定能
    如果不能 那还有谁能访问类的私有属性啊
    记住方法不是哪一个实例具体拥有的  他是一个类的所有实例说共享的 
      

  5.   

    楼主得好好研究下 
    public protected 默认的 private
    他们的相同与不同 这可是非常重要的
    不然你的工程一旦做大 将让你脑袋混乱无比 
      

  6.   

    只要是在同一个类中定义的private变量,不管是何种对象都是一样的访问
      

  7.   

    private 是指只能本类才能访问,不是指本对象才能访问。
      

  8.   

    没错,访问权限修饰符是针对类级别的,同一个类的不同对象的私有成员,依旧能被同一个类的不同实例的方法访问其private 成员,好像有点绕口
      

  9.   

    分清“通过public方法访问”和“直接通过点操作符(.)访问”的区别就好了
    书上说的private变量不能访问是指外部类不能“直接”访问
    类中定义成员变量为private,定义方法为public,目的就是提供公有的方法去访问,修改私有的成员变量
      

  10.   

    private 变量 只能在定义它的类中被访问,别的类不能访问。如果 在定义它的类中都不能被访问的话,定义它不久没用了吗?你应该是记错了。
      

  11.   

    你的main方法就在person类里,怎么不能访问,private不能在其他类中访问,我晕
      

  12.   

    这是访问修饰符的问题,你在同一个类中对各种修饰的变量都是可以访问的,
    访问修饰符    同类     同包     不同包    不同包的子类
    public      y        y         y        y
    default     y        y
    protected   y        y                   y
    private      y
    这是访问权限的图示
    自己看下吧
      

  13.   

    private变量是类内私有,
    而不是对象内私有.这个错误我也犯过,你再好好想想吧
      

  14.   

    你们在哪本书看到的?
    一直以为private只能被本类本对象使用。
      

  15.   

    楼主问题把我问住了,后来我定睛一看 !  不对啊  ,这是在一个类里啊。private:在一个类里可以访问的哈!  解决了啊
      

  16.   

    晕死,在一个类里private怎么就不能访问了。楼主回去补补基础!