class person
{
private String name;
private int age;
private static String country = "CN";
//构造代码块
{
System.out.println("cry.......");
}
/* person(String name,int age)//构造函数
//你这里的name和age与Person类中属性成员name和age半毛钱关系都没有,这里的name和age只在构造函数局部有效,此时外面的name被屏蔽掉了,外部的name属性要用this.name表示
{
name =name;
age = age;
System.out.println("name="+name+" age="+age);
cry();
}
*/
//下面的代码等价于上面的构造方法,只是将参数名改了
person(String name1,int age1)//构造函数
{
name1 =name1;
age1 = age1;
System.out.println("name1="+name1+" age1="+age1);
cry();
}
public void setName(String name)
{
this.name = name;//this应用//这里的this.name所指的就是Person类的属性了。
}
public void getName()
{
System.out.println("name="+name+" age="+age);
}
public void cry()
{
System.out.println("cry.......");
}
}
class persondemo
{
public static void main(String[] args)
{
person p = new person("may",20);
// p.getName();//加上的这句会输出name=null age=0
p.setName("jack");
p.getName();
}
}
/*
为什么输出是下面这个样子呢?
输出是:
cry.......//这条是构造代码块输出的,构造代码块先与构造函数执行
name=may age=20//这条是构造函数执行的结果,注意这个时候p对象的name和age属性值还是默认初始值,name=null,age=0
cry....... //这也是构造函数执行的结果
name=jack age=0//将p的name属性设置成了jack,所有最后打印的结果是这样的
*/
|