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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孤独的鸟人 中级黑马   /  2013-5-8 16:40  /  1751 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 孤独的鸟人 于 2013-5-10 09:22 编辑
  1. class Person
  2. {
  3.         private String name;
  4.         private int age;
  5.         private static String country="cn";
  6.         Person(String name,int age)
  7.         {
  8.                 this.name=name; //这里的name传入的是哪个值?为什么?
  9.                 this.age=age;
  10.         
  11.         }
  12.         public void setName(String name)
  13.         {
  14.                 this.name=name; //这里的name传入的是哪个值?为什么?
  15.                
  16.         }
  17. public void speak()
  18.         {
  19.                 System.out.println(this.name+"..."+this.age);         //输出结果是什么?为什么?
  20.         }
  21. }
  22.         class  PersonDemo
  23. {
  24.         public static void main(String[] args)
  25.         {
  26.                 Person p=new Person("zhangasan",20);
  27.                 p.setName("lisi");
  28.         }
  29. }

复制代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

6 个回复

倒序浏览
第一个问题:传入的是 "zhangsan”。原因是构造函数函数初始化。
第二个问题:传入的是 "lisi”。原因是调用setName方法。
第三个问题:如果调用speak方法的话。会输出 "lisi”,"20" 。
原因是最先是构造函数赋值成员name。然后setName赋值覆盖构造函数的赋值。
成员name的值变为 lisi 。所以输出lisi

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
楼上正解。 setName 方法会改掉 构造函数中传入的name 值。
回复 使用道具 举报
   Person(String name,int age)
        {
                this.name=name; //这里的name传入的是哪个值?为什么?
                this.age=age;
        
        }
这是类的构造方法,类一般默认有一个无参的构造方法。比如
Person(){}
构造方法与类同名,没有返回值。
在创建对象时,
Person p=new Person("zhangasan",20);
如果在创建对象后直接调用speak()方法,
  p.speak(); //这里得到的结果是zhangsan
进行实参到形参的传递。
p.setName("lisi");//这里对象直接调用了setName方法,
这时候如果调用p.speak();得到的结果是lisi

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
如果问题未解决,请继续追问,如果问题解决了,请将分类改为“已解决”,谢谢
回复 使用道具 举报
p.setName("lisi");//这里对象直接调用了setName方法,
这时候如果调用p.speak();得到的结果是lisi
在主函数中加上p.speak();
在后台将看到lisi...20
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马