继承与static
public class Test extends Y {
Test(String str) {
super(str);
// TODO Auto-generated constructor stub
}
Y y = new Y("Test");
static {
System.out.println("tttt");
}
public static void main(String[] args) {
new Z("mian");
}
}
class Y {
static {
System.out.println("t");
}
Y(String str) {
System.out.println("Y - " + str);
}
}
class Z extends Test {
Y y = new Y("Z");
static {
System.out.println("tt");
}
Z(String str) {
super(str);
System.out.println("Z");
}
}
输出结果是:
大概的Java载入顺序为:
main--->父类 --- >static--->父类属性--->父构造函数--->自己属性--->自己构造函数
为什么要用static?
方便在没有创建对象的情况下来进行调用(方法/变量)。
静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量的
static变量
static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响
参考:
http://www.cnblogs.com/dolphin0520/p/3799052.html