java 继承中静态语句块 非静态语句块 构造函数 的分析

来源:互联网 发布:三星galaxy j7网络 编辑:程序博客网 时间:2024/05/28 15:06
//父类的代码
 
public class Father {//静态语句块首次开辟该类内存时执行一次static{System.out.println("statci...");};//语句块每一次新建一个对象执行一次//被继承时,新建子类对象时,也会先执行父类语句块{System.out.println("normal...");}public Father(){System.out.println("father construction...");}public  void fun(){System.out.println("father fun");};public void fun1() {System.out.println("father private fun");}}

//子类的代码

public class Child1 extends Father{static{System.out.println("child statci...");};{System.out.println("child normal...");}public void fun(){System.out.println("child fun");};public Child1(){System.out.println("child construction");}}


测试代码

 

public class Test {public static void main(String args[]) {//Father f1 = new Child1();//静态语句块->语句块->构造函数//父类静态语句块->子类静态->父类语句块->父类构造函数->子类语句->子类构造函数f1.fun();}}


发现静态语句块一定是最先执行的,而且每个类只执行一次。顺序是://静态语句块->语句块->构造函数

如果有继承://父类静态语句块->子类静态->父类语句块->父类构造函数->子类语句->子类构造函数

 

子类继承父类后,重写父类方法,调用时实现多态调用的是子类的方法。如果没有重写,则可以直接访问父类。

 

此外,如果方法被声明为静态方法,则根据引用的类型访问所属的类的方法。

 


http://liqita.iteye.com/blog/1472717