java代码执行顺序
大致按以下情况,静态(属性,变量)大于动态(属性,变量),父类大于子类,属性的定义优先于构造函数,优先级一样看定义顺序,先定义先执行
example
package edu.chen.init;
public class Main {
public static void main(String[] args) {
new B();
}
}
class A {
private static int v1 = getval1();
{
System.out.println(5);
}
private int v2 = getval2();
static {
System.out.println(2);
}
private static int getval1() {
System.out.println(1);
return -1;
}
private static int getval2() {
System.out.println(6);
return -1;
}
public A() {
System.out.println(7);
}
}
class B extends A {
private static int v1 = getval1();
private int v2 = getval2();
{
System.out.println(9);
}
static {
System.out.println(4);
}
private static int getval1() {
System.out.println(3);
return -1;
}
private static int getval2() {
System.out.println(8);
return -1;
}
public B() {
System.out.println(10);
}
}