class Person
{
public String name = "unknown";
public int age = -1;
public Person()
{
}
public Person(String name,int age)
{
this.name = name; //用构造方法中的形式参数初始化实例变量
this.age = age; //用构造方法中的形式参数初始化实例变量
}
public void getInfo()
{
System.out.println("name=" + name + ",age=" + age);
}
}
class Student extends Person
{
public String school = "unknown";
public void Student()
{
super(); //调用父类的构造方法
}
public Student(String name,int age)
{
super(name,age); //调用父类的构造方法
}
public Student(String name,int age,String school)
{
this(name,age); //执行当前构造方法中的代码
//public Student(String name,int age),有this语句调用
this.school = school; //去当前类中的成员变量显式初始化
}
public void study()
{
}
}class TestStudent
{
public static void main(String[] args)
{
Student st = new Student ("zhangsan",20,"清华大学");
//Student st = new Student();
/*st.name = "zhangsan";
st.age = 20;*/
st.getInfo();
}
}
{
public String name = "unknown";
public int age = -1;
public Person()
{
}
public Person(String name,int age)
{
this.name = name; //用构造方法中的形式参数初始化实例变量
this.age = age; //用构造方法中的形式参数初始化实例变量
}
public void getInfo()
{
System.out.println("name=" + name + ",age=" + age);
}
}
class Student extends Person
{
public String school = "unknown";
public void Student()
{
super(); //调用父类的构造方法
}
public Student(String name,int age)
{
super(name,age); //调用父类的构造方法
}
public Student(String name,int age,String school)
{
this(name,age); //执行当前构造方法中的代码
//public Student(String name,int age),有this语句调用
this.school = school; //去当前类中的成员变量显式初始化
}
public void study()
{
}
}class TestStudent
{
public static void main(String[] args)
{
Student st = new Student ("zhangsan",20,"清华大学");
//Student st = new Student();
/*st.name = "zhangsan";
st.age = 20;*/
st.getInfo();
}
}
请问:
1和5有何区别?
能不能分别解释一下这几个步骤分别执行了哪些代码?(分析每一个步骤)
为什么super和this调用语句不能同时在一个构造函数中出现?
为什么super或this调用语句只能作为构造函数中的第一句出现?
例如:
class Person
{
public String name = "unknown";
public int age = -1;
……
中,1做的工作相当于:public String name;
public int age;
5做的工作相当于:name="unknown";age=-1;