class Insect {
int i = 9;
int j;
Insect() {
prt("i = " + i + ", j = " + j);
j = 39;
}
static int x1 =
prt("static Insect.x1 initialized");/////////////////////static int prt(String s) {
System.out.println(s);
return 47;
}
}public class Beetle extends Insect {
int k = prt("Beetle.k initialized");
Beetle() {
prt("k = " + k);
prt("j = " + j);
}
static int x2 =
prt("static Beetle.x2 initialized");
static int prt(String s) {
System.out.println(s);
return 63;
}
public static void main(String[] args) {
prt("Beetle constructor");
Beetle b = new Beetle();
}
}
/* 运行结果:
static Insect.x1 initialized
static Beetle.x2 initialized//static Beetle.x2 initialized
Beetle constructor//Beetle constructor
i = 9, j = 0
Beetle.k initialized//Beetle.k initialized
k = 63//k = 63
j = 39//j = 39*/
//多态中说,子类覆盖了父类的方法,调用的将是子类的方法,为何static int x1=prt("static Insect.x1 initialized"); 调用的是父类的方法。
int i = 9;
int j;
Insect() {
prt("i = " + i + ", j = " + j);
j = 39;
}
static int x1 =
prt("static Insect.x1 initialized");/////////////////////static int prt(String s) {
System.out.println(s);
return 47;
}
}public class Beetle extends Insect {
int k = prt("Beetle.k initialized");
Beetle() {
prt("k = " + k);
prt("j = " + j);
}
static int x2 =
prt("static Beetle.x2 initialized");
static int prt(String s) {
System.out.println(s);
return 63;
}
public static void main(String[] args) {
prt("Beetle constructor");
Beetle b = new Beetle();
}
}
/* 运行结果:
static Insect.x1 initialized
static Beetle.x2 initialized//static Beetle.x2 initialized
Beetle constructor//Beetle constructor
i = 9, j = 0
Beetle.k initialized//Beetle.k initialized
k = 63//k = 63
j = 39//j = 39*/
//多态中说,子类覆盖了父类的方法,调用的将是子类的方法,为何static int x1=prt("static Insect.x1 initialized"); 调用的是父类的方法。
static是属于类的方法,调用时直接用类名调用