父类
<pre name="code" class="java">public class Father{
public Father(){
System.out.println("我是父类无参构造函数");
}
public Father(String pa){
System.out.println("我是父类有参构造函数");
}
public void Tool(){
hook_paint();
};
public void hook_paint(){
System.out.println("我是父类卡榫函数");
};
}
子类
public class Son extends Father{
public Son(){
System.out.println("我是子类无参构造函数");
}
public Son(String pa){
System.out.println("我是子类有参构造函数");
}
@Override
public void hook_paint() {
System.out.println("我是子类卡榫函数");
}
}
主函数
<pre name="code" class="java">public class myClass {
public static void main(String args[]){
// Son father = new Son();
Father father = new Son("1");//默认初始化父类
father.Tool();
}
}
Son father = new Son()执行结果
我是父类无参构造函数
我是子类无参构造函数
我是子类卡榫函数
Son father = new Son("1")执行结果
我是父类 无参构造函数我是子类 有参构造函数
我是子类卡榫函数
1.初始化顺序:父类无参构造器,子类构造器
2.卡榫函数:继承关系,new子类(默认创建父类的构造器),再执行父类的具象函数,
具象函数调用卡榫函数,从而执行子类的卡榫函数(父类的卡榫函数不执行)