A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马德强 黑马帝   /  2011-12-8 21:58  /  2121 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 马德强 于 2011-12-9 09:32 编辑
  1. class Person
  2. {
  3.         private String name;
  4.         private int age;
  5.         Person(String name,int age)
  6.         {
  7.                 this.name=name;
  8.                 this.age=age;
  9.         }
  10.         public String getName()
  11.         {
  12.                 return name;
  13.         }
  14.         public int getAge()
  15.         {
  16.                 return age;
  17.         }
  18.         public boolean equals(Object obj)
  19.         {
  20.                 if(!(obj instanceof Person))
  21.                         return false;
  22.                 Person p=(Person)obj;
  23.                 return this.name.equals(p.name)&&this.age==p.age;
  24.         }
  25.         。。。。。。。
  26. }
复制代码
为什么equals方法中,Person p 可以直接访问其私有成员age 和name 呢?

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

3 个回复

倒序浏览
所谓的私有是对外部类来说的,equals方法是这个Person类中的方法所以能访问,如果放到外部类中,就只能用getname()方法和getage()方法了。
回复 使用道具 举报
因为p是person对象的一个引用,p指向的对象里面有私有name和age两个成员变量,自己调用自己的东西。。。
回复 使用道具 举报
因为上面代码中使用了private关键字修饰了name和age属性,这就意味着除了Person类本身,其他所有的外部类都不能直接访问这些属性,只能通过这些属性的取值(get)、赋值(set)方法来访问这些属性!而在Person类自己内部则可以直接调用这些私有变量!
希望能对你有帮助!呵呵···

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马