本文介绍了Android代码块执行顺序分析总结,分享给大家,具体如下:
子类、父类变量,代码块,以及构造方法的加载顺序,是我们在程序开发中时不时遇到的一个问题,也是比较容易混淆的。
基础准备:
测试的父类:
public class ParentClass { public static String name = "爸爸"; public int age = 40; public ParentClass(){ System.out.println("父类构造函数"); } //非静态代码块 { System.out.println("父类非静态代码块" + "---" + age); } //静态代码块 static{ System.out.println("父类静态代码块" + "---" + name); } }
测试的子类:
public class ChildrenClass extends ParentClass{ public static String name = "儿子"; public int age = 15; public ChildrenClass(){ System.out.println("子类构造函数"); } { System.out.println("子类非静态代码块" + "---" + age); } static { System.out.println("子类静态代码块" + "---" + name); } }
执行new ChildrenClass()结果:
结果分析:
父类静态代码块执行前,父类静态变量就已经执行了。
父类非静态代码块执行前,父类非静态变量就已经执行了。
上面结论子类同理。
代码块执行顺序总结:
父类的静态成员变量—->父类静态代码块—->子类静态成员变量—->子类静态代码块—>父类非静态变量—->父类非静态代码块—->父类构造方法—->子类非静态变量—->子类非静态代码块—->子类构造方法。
另外关于代码块的总结:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持菜鸟教程(cainiaojc.com)。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#cainiaojc.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。