黑马程序员技术交流社区
标题:
求解释???
[打印本页]
作者:
孤独的鸟人
时间:
2013-5-8 16:40
标题:
求解释???
本帖最后由 孤独的鸟人 于 2013-5-10 09:22 编辑
class Person
{
private String name;
private int age;
private static String country="cn";
Person(String name,int age)
{
this.name=name; //这里的name传入的是哪个值?为什么?
this.age=age;
}
public void setName(String name)
{
this.name=name; //这里的name传入的是哪个值?为什么?
}
public void speak()
{
System.out.println(this.name+"..."+this.age); //输出结果是什么?为什么?
}
}
class PersonDemo
{
public static void main(String[] args)
{
Person p=new Person("zhangasan",20);
p.setName("lisi");
}
}
复制代码
作者:
殇_心。
时间:
2013-5-8 17:48
第一个问题:传入的是 "zhangsan”。原因是构造函数函数初始化。
第二个问题:传入的是 "lisi”。原因是调用setName方法。
第三个问题:如果调用speak方法的话。会输出 "lisi”,"20" 。
原因是最先是构造函数赋值成员name。然后setName赋值覆盖构造函数的赋值。
成员name的值变为 lisi 。所以输出lisi
作者:
ZhaoYuBetter
时间:
2013-5-8 18:54
楼上正解。 setName 方法会改掉 构造函数中传入的name 值。
作者:
Super_Class
时间:
2013-5-8 23:20
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
作者:
黄玉昆
时间:
2013-5-9 21:43
如果问题未解决,请继续追问,如果问题解决了,请将分类改为“已解决”,谢谢
作者:
小草无名
时间:
2013-5-28 21:00
p.setName("lisi");//这里对象直接调用了setName方法,
这时候如果调用p.speak();得到的结果是lisi
在主函数中加上p.speak();
在后台将看到lisi...20
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2