java静态语句块、构造语句块以及构造函数的执行顺序
2015-06-25 22:18
447 查看
class HelloA { public HelloA() { System.out.println("HelloA"); } { System.out.println("I'm A class"); } static { System.out.println("static A"); } } public class HelloB extends HelloA { public HelloB() { System.out.println("HelloB"); } { System.out.println("I'm B class"); } static { System.out.println("static B"); } public static void main(String[] args) { HelloB h=new HelloB();; } }结果:
static A static B I'm A class HelloA I'm B class HelloB
分析:首先执行父类静态的内容,父类静态的内容执行完毕后,接着去执行子类的静态的内容,当子类的静态内容执行完毕之后,再去看父类有没有非静态代码块,如果有就执
行父类的非静态代码块,父类的非静态代码块执行完毕,接着执行父类的构造方法;父类的构造方法执行完毕之后,它接着去看子类有没有非静态代码块,如果有就执行子类的
非静态代码块。子类的非静态代码块执行完毕再去执行子类的构造方法。总之一句话,静态代码块内容先执行,接着执行父类非静态代码块和构造方法,然后执行子类非静态代
码块和构造方法。 而且子类的构造方法,不管这个构造方法带不带参数,默认的它都会先去寻找父类的不带参数的构造方法。如果父类没有不带参数的构造方法,那么子类必
须用supper关键字来调用父类带参数的构造方法,否则编译不能通过。
相关文章推荐
- java设计模式之简单工厂模式
- Java反编译工具
- DatagramPacket,DatagramSocket
- 初学Java之方法之间的组合运用
- "XX cannot be resolved to a type "eclipse报错及解决说明
- 问题:eclipse xml文件中按alt+/没有提示信息?
- java线程基础复习
- JAVAC不是内部或外部命令
- struts2每次访问都会创建一个新的session
- eclipse使用Maven搭建web项目
- spring问题1
- java Thread线程run()和start()方法的区别
- Java - 使用 XSD 校验 XML
- Socket客户端与服务端
- Eclipse 代码提示功能失效问题解决
- JNI Kickstart 小结 02 :桥接至与 Java 无关的纯本地库
- adt Failed to create the Java Virtual Machine.
- 30. Socket下载时,服务器端出错: len=10240 count=115 len=10240 count=116 len=7168 count=last java.net.SocketExc
- Java-斐波那契数
- 27.NDK开发时, javah 包名.类名 出错