Android代码块执行顺序分析总结
本文介绍了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()结果:

结果分析:
父类静态代码块执行前,父类静态变量就已经执行了。
父类非静态代码块执行前,父类非静态变量就已经执行了。
上面结论子类同理。
代码块执行顺序总结:
父类的静态成员变量—->父类静态代码块—->子类静态成员变量—->子类静态代码块—>父类非静态变量—->父类非静态代码块—->父类构造方法—->子类非静态变量—->子类非静态代码块—->子类构造方法。
另外关于代码块的总结:
- 在类第一次调用时,静态代码块只执行这一次。
- 静态代码块和静态方法只能调用静态变量;
- 非静态代码块和非静态方法可以调用任何(静态+非静态)变量。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
Android使用criteria选择合适的地理位置服务实现方法
这篇文章主要介绍了Android使用criteria选择合适的地理位置服务实现方法,实例分析了Criteria的具体使用技巧,需要的朋友可以参考下2016-01-01
Android入门之IntentService的使用教程详解
IntentService的生命周期中有一个非常好的方法-onHandleIntent方法,它是一个abstract方法,开发者在实现IntentService时可以覆盖它来处理“长事务”。本文就来聊聊IntentService的使用,需要的可以参考一下2022-12-12
MaterialApp Flutter 应用全局配置与主题管理详解
这篇文章主要为大家介绍了MaterialApp Flutter 应用全局配置与主题管理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-03-03


最新评论