java 继承中的构造方法

 

 规则如下:

  1.子类的构造过程必须调用父类(基类)中的构造方法。

    简单理解:子类继承了父类,子类创建出来的同是也必须把父类创建出来。(没有父亲,哪来儿子)

  2.子类可以在自己的构造方法中使用super(argument_list)调用父类(基类)的构造方法。

    如果调用了super,必须写在子类构造方法的第一行。

  3.如果子类的构造方法中没有显示的调用父类的构造方法(子类构造方法中没有写super),则系统默认调用父类无参的构造方法

  4.如果子类在构造方法中既没有显示调用父类的构造方法,而父类中又没有无参的构造方法,则编译出错。

class Person{
    
    public String name;
    public int age;
    //    有参的构造方法
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

}

class Student extends Person{
    
    //规则一:
    //子类的构造方法中必须调用父类的构造方法
    public Student(String name, int age, String stuNum, String school) {  
        //规则二:
        //super必须位于子类构造方法的第一行!
        super(name, age);
        this.stuNum = stuNum;
        this.school = school;
    }

    public String stuNum;
    public String school;
    
    //规则四:
    //这里由于构造方法中既没有显示调用父类Person的构造方法,父类又没有无参的构造方法
    //所以编译器报错
    public Student(){ }
    
}


public class Test {
    public static void main(String[] args) {
        
    }
    
}

 

 

class Person{
    
    public String name;
    public int age;
    //    有参的构造方法
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    //添加无参的构造方法
    public Person(){
        System.out.println("我是父类的无参构造方法");
    }

}

class Student extends Person{
    
    public String stuNum;
    public String school;
    
    //第三条规则
    //这里由于构造方法中没有显示调用父类Person的构造方法,系统默认调用父类的无参构造方法
    public Student(){ }
    
}


public class Test {
    public static void main(String[] args) {
        Student s = new Student();
    }
    
}

  测试结果:我是父类的无参构造方法

posted @ 2013-07-22 21:16  智商输给猪  阅读(454)  评论(0编辑  收藏  举报