下面通过例子来说明:
父类
father.java public class father { static{//静态块 System.out.println("father'sSTATIC free block running"); } {//非静态块 System.out.println("father'sfree block running"); } public father(){ System.out.println("father'sconstructor running"); } }
子类
son.java public class son extends father{ static{//静态块 System.out.println("son'sSTATIC free block running"); } {//非静态块 System.out.println("son's freeblock running"); } public son() { // TODO Auto-generated constructor stub System.out.println("son'sconstructor running"); } }
主函数所在类
test.java public class test{ public static void main(String[] args) { Class f; try { System.out.println("--------beforeload father--------"); f=Class.forName("freeblock.father"); System.out.println("--------afterload father---------"); System.out.println("--------beforeinitial father object--------"); f.newInstance(); System.out.println("--------afterinitial father object--------"); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } Class s; try { System.out.println("-------beforeload son--------"); s=Class.forName("freeblock.son"); System.out.println("--------afterload son-------"); System.out.println("--------beforeinitial son object----------"); s.newInstance(); System.out.println("--------afterinitial son object-----------"); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } }
执行结果:
--------before loadfather--------
father's STATIC free blockrunning
--------after loadfather---------
--------before initial fatherobject--------
father's free block running
father's constructor running
--------after initial fatherobject--------
-------before load son--------
son's STATIC free block running
--------after load son-------
--------before initial sonobject----------
father's free block running
father's constructor running
son's free block running
son's constructor running
--------after initial son object-----------