刚才项目中打断点找问题时,突然发现了Java变量初始化自己还是并没有完全弄懂,干脆系统的看下
写一个子类
public class SonClass { private String sonTag="SonClass"; public static String sTest="a"; public SonClass(){ sonTag="SonClass 购置"; } }分别打上断点
会先走
然后早构造函数
接下来在让子类继承父类
public class SonClass extends FatherClass{ private String sonTag="SonClass"; public static String sTest="a"; public SonClass(){ sonTag="SonClass 购置"; } }
public class FatherClass { protected String fatherTag="FatherClass"; private String name="name"; private String age="34"; public FatherClass(){ fatherTag ="FatherClass 构造"; } }在打上端点运行
发现子类还没有初始化,父类相关变量已经初始化,然后就是走父类的构造函数,下一步,子类的相关变量初始化,子类的构造函数
分割线
当在子类里面添加一个静态变量时,会发现静态变量虽然已经初始化,但不属于子类,这也就是handler内存泄露,解决方法添加静态的原因