静态初始化块的执行顺序
- 上溯到Object类,先执行Object的静态初始化块,再向下执行子类的静态初始化块,直到我们的类的静态初始化块为止
- 构造方法执行顺序和上面顺序一样
public class User3 {
int id;//id
String name;//账户名
String pwd;//密码
static String company;//公司名称
static{
System.out.println("执行类的初始化工作");
company = "北京尚学堂";
printCompany();
}
public static void printCompany(){
System.out.println(company);
}
public static void main(String[] args){
User3 u3 = new User3();
u3.printCompany();
}
}
执行结果为:
执行类的初始化工作
北京尚学堂
北京尚学堂
super父类对象引用
super时直接父类对象的引用。可以通过super来访问父类中被子类覆盖的方法和属性
package cn.sxt.oo;
public class TestSuper01 {
public static void main(String[] args){
new ChildClass().f();
}
}
class FatherClass{
public int value;
public void f(){
value = 100;
System.out.println("FatherClass.value="+value);
}
}
class ChildClass extends FatherClass {
public int value;
public void f() {
super.f();
value = 200;
System.out.println("ChildClass.value=" + value);
System.out.println(value);
System.out.println(super.value);//调用父类对象的成员变量
}
}
属性方法的查找顺序
当前类——父类——依次向上
没找到出现编译错误,只要找到即终止过程