子类集成父类各方法执行顺序

/**
 * 父类
 * @author:hounk
 * @version 创建时间:2017年3月19日 下午5:40:44
 */
public class FatherTest {
	
	private String name;

	FatherTest() {
		System.out.println("--父类的无参构造函数--");
	}

	FatherTest(String name) {
		this.name = name;
		System.out.println("--父类的有参构造函数--" + this.name);
	}

	static {
		System.out.println("--父类的静态代码块--");
	}

	{
		System.out.println("--父类的非静态代码块--");
	}

	public void speak() {
		System.out.println("--父类的方法--");
	}

	// 加入一个main程序后
	public static void main(String[] args) {
		System.out.println("--父类main方法--");
		FatherTest father = new FatherTest("父亲的名字");
		father.speak();
	}
}
执行结果:

--父类的静态代码块--
--父类main方法--
--父类的非静态代码块--
--父类的有参构造函数--父亲的名字
--父类的方法--

/**
 * 子类
* @author:hounk
* @version 创建时间:2017年3月19日 下午5:42:51
*/
public class SonTest extends FatherTest {
    private String name;
    static{
       System.out.println("--子类的静态代码块--");
    }

    {
       System.out.println("--子类的非静态代码块--");
    }

    SonTest(){
       System.out.println("--子类的无参构造函数--");
    }

    SonTest(String name){
       this.name=name;
       System.out.println("--子类的有参构造函数--"+this.name);
    }

    @Override
    public void speak(){
       System.out.println("--子类Override了父类的方法--");
    }  
   
    //然后再加入一个main函数
    public static void main(String[] args) {
       System.out.println("--子类main方法--");
      
       FatherTest father=new FatherTest("父亲的名字");
       father.speak();

       SonTest son=new SonTest("儿子的名字");

       son.speak();
    }
}

执行结果:

--父类的静态代码块--
--子类的静态代码块--
--子类main方法--
--父类的非静态代码块--
--父类的有参构造函数--父亲的名字
--父类的方法--
--父类的非静态代码块--
--父类的无参构造函数--
--子类的非静态代码块--
--子类的有参构造函数--儿子的名字
--子类Override了父类的方法--

猜你喜欢

转载自blog.csdn.net/hnkuo/article/details/63686525