看重点。。。作者: 黑马-李勇 时间: 2012-7-3 02:31
个人观点:
1.person(String name)
理解为person(String lisi)中name=name是本类中的name(name初始为null)所以可以解释为name=null,并没有用到传进来的那个lisi即this.name
2.person(String n)
person(String lisi)中n=lisi,是本类中的name(name初始为null)所以可以解释为name=lisi,speak中调用本类中的name输出就是lisi了作者: 金龙 时间: 2012-7-3 02:38
Person p = new Person("lisi"); 这句的意思是创建变量名为P的Person对象,而创建对象需要Person类中的构造方法。由于你的括号里传了个“lisi”,所以是去Person类中去找参数为String类型的构造函数,于是,“lisi”给了n,n又赋值给了name,就是这么个流程啊。作者: 孙飞 时间: 2012-7-3 07:21
class Person
{
private String name;
private int age;
/*
person(String name)//输出为name=null
{
name = name;//因为这里你的参数name和要赋的name一样,所以它会默认的把name赋给本方法中的name也就
} //是自身的name,所以名字相同时应该在前面的name前加上this.来表示把参数赋给对象
*/
Person(String n)//输出为name=lisi
{
name = n;//把n的值lisi赋给name
}
Person(String n, int a)
{
name = n;
age = a;
}
public void speak()
{
System.out.println("name="+name+"....age="+age);
}
}
class PersonDemo
{
public static void main(String[] args)
{
Person p = new Person("lisi");//这里new一个Person类的对象,Person中两个构造函数重载,程序会根据
//参数自动选择,因为你new的时候初始化了name所以选择了Person(string n)
p.speak();
}
} 作者: 邵阳 时间: 2012-7-3 09:04
class Person
{
private String name;
private int age;
/*
Person(String name)//输出为name=null
{
name = name;
}
*/
Person(String n)//输出为name=lisi
{
name = n;
}
Person(String n, int a)
{
name = n;
age = a;
}
public void speak()
{
System.out.println("name="+name+"....age="+age);
}
}
class personDemo
{
public static void main(String[] args)
{ Person p = new Person("lisi");
p.speak();
}
}