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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 回天之力 中级黑马   /  2013-11-4 13:48  /  1225 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public int compareTo(Object obj)
  2.     {
  3.             if(!(obj instanceof Student))
  4.                     throw new RuntimeException("不是Student类。");
  5.             Student s=(Student)obj;
  6.             if(this.age>s.getAge())    //1  
  7.                     return 1;
  8.             if(this.age==s.age)    //2     大家主要看着 三行,疑问:为什么age、name为private,而在这里为什么也可以调用?它应该用get方法来得到值啊。为什么?
  9.             {
  10.                 return this.name.compareTo(s.name);//3
  11.             }
  12.             return -1;
  13.     }
复制代码

评分

参与人数 1黑马币 +3 收起 理由
乔兵 + 3

查看全部评分

7 个回复

倒序浏览
类student未设置相关映射方法!!!!!!!!!!
回复 使用道具 举报
if(this.age>s.getAge())
if(this.age==s.age)
return this.name.compareTo(s.name);//3

这样的写法,楼主编译通过了吗??

我感觉父类中变量被定义为private,子类只能通过getName()方法获取啊

评分

参与人数 1黑马币 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
  1. public int compareTo(Object obj)
  2.     {
  3.             if(!(obj instanceof Student))
  4.                     throw new RuntimeException("不是Student类。");
  5.             Student s=(Student)obj;
  6.             if(this.age>s.getAge())    //1  
  7.                     return 1;
  8.             if(this.age==s.age)    //2    s是Student对象,age是student对象的属性啊,虽然传进来时student被提升为object类型,但是上面已经强转回来了啊,本类对象访问本类私有成员属性天经地义么不是
  9.             {
  10.                 return this.name.compareTo(s.name);//3同age属性
  11.             }
  12.             return -1;
  13.     }
复制代码

评分

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

查看全部评分

回复 使用道具 举报
我说下自己的看法,因为该方法是在Student类中,所以可以用s.age。在本类中访问没问题的。但是如果你定义的是比较器。就必须用get方法获取。私有在本类中是可以调用的,在该类外部无法调用而已
回复 使用道具 举报
寻丶丶觅 发表于 2013-11-5 09:49
我说下自己的看法,因为该方法是在Student类中,所以可以用s.age。在本类中访问没问题的。但是如果你定义的 ...

提问结束的帖子不再予以加分
回复 使用道具 举报
黄炳期 发表于 2013-11-5 10:53
提问结束的帖子不再予以加分

呃,不是为了要分,是觉得上面说的不是让人好理解。
回复 使用道具 举报

但是这个私有变量age是s对象中的private变量,又不是this中的。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马