黑马程序员技术交流社区

标题: 菜鸟问:急需解答~!! [打印本页]

作者: 黄湘怡    时间: 2011-11-3 17:06
标题: 菜鸟问:急需解答~!!
  1. class Person
  2. {
  3.         private String name;

  4.         Person(String name)
  5.         {
  6.                 this.name = name;               
  7.         }

  8.         public void setName(String name)
  9.         {
  10.                 this.name = name;
  11.         }

  12.         public String getName()
  13.         {
  14.                 return name;
  15.         }

  16. }
复制代码
在构造方法里写了一遍this.name = name,又在set方法里写了一遍是不是多余的?两者的区别在哪里??
作者: 沙铁健    时间: 2011-11-3 17:21
本帖最后由 沙铁健 于 2011-11-3 17:24 编辑

这两个this.name=name; 可不一样. this.name 是相同的 this是本类中的name 字段, 后面那个字段  是你 方法的参数............给你个直观点得.
构造函数是你new这个对象的时候可以给它初始值 Person p=new Person("张三") 这个时候 你的构造函数 会直接 给你的 name字段赋值, 当然你在 p.setName("李四") 就会重新赋值了.
一般都会加一个空的构造函数Person() { }   这时候你在 Person p=new Person();的时候 单独的给 name赋值 你就可以用p.setName("张三")
这么说你能理解吗?
作者: 魏兴发    时间: 2011-11-3 17:33
本帖最后由 know 于 2011-11-3 17:38 编辑

构造方法里的this.name=name是你在new 对象的时候对私有变量赋初值,但是当我们需要再次更改这个私有变量咋办啊?不可能再去调用构造方法了吧。当然就是通过setName()方法啦!!通过调用setName()方法就可以给类中的私有变量赋新的值了啊!!!所以并不多余的啦!!{:soso_e100:}
作者: 白倩    时间: 2011-11-3 17:45
这两个不一样,在构造方法中写this.name=name是类初始化时所设置的值,
而set中的 this.name=name是你自己随时可以用新值来改变初始化时所设置的值。
作者: 黄湘怡    时间: 2011-11-3 18:01
恩,我明白了,谢谢大家~!
作者: 田忠    时间: 2011-11-4 18:23
都是高手




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2