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();
}
}

解决方案 »

  1.   

    为什么我的问题没有人回答啊????
    请问:
    1和5有何区别?
    能不能分别解释一下这几个步骤分别执行了哪些代码?(分析每一个步骤)
    为什么super和this调用语句不能同时在一个构造函数中出现?
    为什么super或this调用语句只能作为构造函数中的第一句出现?
      

  2.   

    super的作用是调用父类的构造函数
      

  3.   

    在JAVA中,子类无条件的继承父类的无参数的构造方法。但可以在子类中覆盖父类的构造方法。另外,子类若要调用父类的某一构造方法,则必须是子类构造的方法的第一句,调用SUPER()。
      

  4.   

    1和5有何区别?(5分)
    例如:
    class Person
    {
    public String name = "unknown";
    public int age = -1;
              ……
    中,1做的工作相当于:public String name;
                       public int age;
    5做的工作相当于:name="unknown";age=-1;