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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 罗正荣 中级黑马   /  2013-2-20 00:40  /  1582 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 罗正荣 于 2013-2-20 11:34 编辑
  1. class Person
  2. {

  3. private String name="张三";//这里name值是只要我创建一个new Person("lisi");之后就会被lisi覆盖掉吗?
  4. private static int age;
  5. Person(int age)
  6. {
  7. this.age = age;
  8. }
  9. Person(String name)//还有这里的
  10. {
  11. this.name = name;
  12. }

  13. public void speak()
  14. {
  15. System.out.println("name="+this.name+"...age="+this.age);
  16. this.show();
  17. }
  18. public void show()
  19. {
  20. System.out.println(this.name);
  21. }

  22. }

  23. public class PersonDemo3
  24. {
  25. public static void main(String[] args)
  26. {



  27. Person p = new Person("lisi");

  28. p.speak();

  29. }
  30. }
复制代码
第一遍听毕老师讲的时候好像还能分清楚,怎么感觉越听越糊涂了,name完全搞混淆了,对象的name、局部变量name、成员变量name{:soso_e134:}
能不能都分别打印一下或者画个图直观的区分一下呢?

4 个回复

倒序浏览
04.private String name="张三";//这里name值是只要我创建一个new Person("lisi");之后就会被lisi覆盖掉吗?
private String name = "张三";  是person类所有对象的初始值,当你通过构造函数 Person(String name)传入一个name时,你所新new的对象的name被重新赋值,而其他的对象的name的初始值仍是"张三";
10.Person(String name)//还有这里的   这个name只是随便起的一个变量名,也可以叫别的

11.{

12.this.name = name;

13.}

this表示的是是谁在调用就指的是谁,比如p.sperk()中的this 指的就是p
回复 使用道具 举报
private String name="张三";
//这里是定义了一个成员变量name,它是作用于整个类中的,对象一建立,就会对对象进行默认初始化。而局部变量是作用于局部范围的,比如定义在方法中的变量name。
private static int age;
Person(int age)
{
this.age = age;
}
Person(String name)
//是对象的构造函数,当建立一个带特有name属性的对象后,会执行这个构造函数,来覆盖掉默认初始化中的name值。
{
this.name = name;/*哪个对象在调用这个构造函数,this指的就是哪个对象。当建立一个Person p = new Person("lisi")时,this指的就是对象p,也就是p.name = name;也就是把“lisi”赋给了p中的name,覆盖掉初始化中的“张三”。*/
}
毕老师讲的对象的初始化过程的视频中对一个对象的建立讲的很详细,可以再看看。
回复 使用道具 举报
上面都说的很好了
个人觉得你的 private static int age;中的static应该去掉,此处没有必要定义成静态的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马