this的菜鸟问题

来源:百度知道 编辑:UC知道 时间:2024/05/25 18:16:11
public class ConstructTest extends Father
{
String name;
int age;
public ConstructTest(){
//super();//调用父类的无参构造器
System.out.println("默认的无参构造器");
}
public ConstructTest(String name,int age ){
//this();
System.out.println("ConstructTest");
this.name=name;//前者是本类的字段
this.age=age;//后者是传入的参数
}
public static void main(String[] args){
ConstructTest ct1 = new ConstructTest();
ConstructTest ct2 = new ConstructTest("jerry",20);
System.out.println(ct2.name);
}
}
class Father
{
public Father(){
System.out.println("父类构造器");
}
}
问1.如果用new去写this.name=name;该怎么写
问2.this不注释掉的话运行就多一行显示“默认的无参构造器”,注释掉这行就没了,why?

this.name = name ;是把形参name值传给成员变量,new 相对类来说的,像ConstructTest ct1 = new ConstructTest();

this();调用的是此类中的构造方法,会执行System.out.println("默认的无参构造器");
所以要输一次“默认的无参构造器”,

1.建立一个静态变量就好public static String name=new String(name);
2.ConstructTest()是你的构造函数.ConstructTest ct1 = new ConstructTest();申请这个ct1的时候,编译器会帮你运行ConstructTest()函数初始化.