父類 FatherClass
package 父類與子類方法調用順序;
/**
* 父類
* @author shundong
*
*/
public class FatherClass {
private int i =0;
private String name;
/**
* 父類無參構造
*/
FatherClass(){
System.out.println("--父類無參構造--");
}
/**
* 父類帶參構造
* @param name
*/
FatherClass(String name){
this.name=name;
System.out.println("--父類帶參構造--"+this.name);
}
/**
* 父類靜態代碼塊
*/
static{
System.out.println("--父類的靜態代碼塊--");
}
/**
* 父類非靜態代碼塊
*/
{
++i;
System.out.println("--父類的非靜態代碼塊--"+i);
}
/**
* 父類的方法
*/
public void speak(){
System.out.println("--父類的方法--");
}
//加入一個main程序后
public static void main(String[] args) {
System.out.println("--父類主程序--");
FatherClass father=new FatherClass("父類");
father.speak();
}
}
結果:
子類 SonClass
package 父類與子類方法調用順序;
/**
* 子類
* @author shundong
*
*/
public class SonClass extends FatherClass {
private String name;
/**
* 子類無參構造
*/
SonClass(){
System.out.println("--子類無參構造--");
}
/**
* 子類帶參構造
* @param name
*/
SonClass(String name){
this.name=name;
System.out.println("--子類帶參構造--"+this.name);
}
/**
* 子類靜態代碼塊
*/
static{
System.out.println("--子類靜態代碼塊--");
}
/**
* 子類的非靜態代碼塊
*/
{
System.out.println("--子類的非靜態代碼塊--");
}
/**
* 重寫父類方法
*/
@Override
public void speak(){
System.out.println("--子類重寫(Override)了父類的方法--");
}
//然后再加入一個main函數
public static void main(String[] args) {
System.out.println("--Main主程序調動--");
FatherClass father=new FatherClass("父親");
father.speak();
SonClass son=new SonClass("兒子");
son.speak();
}
}
結果