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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhangle 中级黑马   /  2014-5-5 12:36  /  1205 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 zhangle 于 2014-5-5 12:45 编辑
  1. class Student implements Comparable//该接口强制让学生具备比较性
  2. {
  3.         private String name;
  4.         private int age;

  5.         Student(String name,int age)
  6.         {
  7.                 this.name = name;
  8.                 this.age = age;
  9.         }
  10.         public int compareTo(Object obj)
  11.         {
  12.                 return 1;
  13.                 //return -1;
  14.                 /*
  15.                 if(!(obj instanceof Student))
  16.                         throw new RuntimeException("不是学生对象");
  17.                 Student s = (Student)obj;

  18.                 System.out.println(this.name+"...compare..."+s.name);
  19.                 if(this.age>s.age)
  20.                         return 1;
  21.                 if(this.age==s.age)//比较
  22.                 {
  23.                         return this.name.compareTo(s.name);
  24.                 }
  25.                 return -1;
  26.                 */
  27.         }
  28.         public void setName(String n)
  29.         {
  30.                 name = n;
  31.         }
  32.         public void setAge(int a)
  33.         {
  34.                 age = a;
  35.         }

  36.         public String getName()
  37.         {
  38.                 return name;
  39.         }
  40.         public int getAge()
  41.         {
  42.                 return age;
  43.         }
  44. }
复制代码

为什么不能用 public void setName(String name)
{
this.name = name;
}

2 个回复

倒序浏览
看来你还没有理解清楚啊
this.name=name是因为传进来的参数是name,为了分清两个name所以用this
而name = n;名字不一样,很明显就可以分清楚,
而这二个语句的目的都是一样的,都是把传进来的形参赋给变量name
回复 使用道具 举报
我问的是为什么不能用 public void setName(String name)
{
this.name = name;
}
调试时用this.name = name会报错,用name = n不会报错
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马