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();
}
}
Person p = new Person("lisi"); 这句的意思是创建变量名为P的Person对象,而创建对象需要Person类中的构造方法。由于你的括号里传了个“lisi”,所以是去Person类中去找参数为String类型的构造函数,于是,“lisi”给了n,n又赋值给了name,就是这么个流程啊。