java之继承类的构造方法

回顾一下之前学习的有关构造方法:

继承类的构造方法如之前学习的初学构造方法一课类似,当主程序new了新对象后,即使创类程序中,没写构造方法,java也默认写了一个空的构造方法。

eg.

public class Study{
    public static void main(String[] args){
        Person one=new Person();    //默认调用Person()这个空的构造方法。
    }
}
class Person{

    Person(){        //若不写构造方法,默认就是有这个空的构造方法
    }            
}

而继承类的构造方法,则在此基础上又多了些隐藏条件。即:

当new了子类新对象的时候(即对子类对象进行初始化的时候),父类的构造方法也会执行,且其优先级在子类的构造方法之前。

如果把这个隐藏式体现出来,则表现为父类的构造方法写在子类构造方法内的第一行,且必须第一行。

写第二行或任何其他行都不行,只因为构造儿子的唯有爸爸。不先构造爸爸,哪来的儿子类。哈哈······

class Dad{
    String name;
    Dad(){
        System.out.println("我是你爸爸");
    }
    Dad(String name){
        this.name=name;    
        System.out.println("我是你爸爸2");
    }
}
class Son extends Dad{
    Son(){
        super();   //默认优先执行父类构造方法,此行不写也会执行。
        System.out.println("这是我儿子");
    }
    Son(String name){
        super("有参");//不写默认调用super();写了就是方法重载,且必须第一行
        System.out.println("这是我儿子2");

    }
}

public class Study{
    public static void main(String[] args){
        Son you=new Son();
        Son you2=new Son("实参");
    }
}

/*
输出结果为: 
我是你爸爸
这是我儿子
我是你爸爸2
这是我儿子2

你可能感兴趣的:(java,开发语言,jvm)