一、父子类中都是static代码块:
class Parent{
static{
System.out.println(1);
}
public Parent(){
System.out.println("Parent");
}
}
class Son extends Parent{
static{
System.out.println(2);
}
public Son(){
System.out.println("Son");
}
}
public class Test {
public static void main(String[] args) {
Parent p = new Son(); //或Son p = new Son();
}
}
输出:
1
2
Parent
Son
二、父子类中都是普通代码块
class Parent {
{
System.out.println(1);
}
public Parent() {
System.out.println("Parent");
}
}
class Son extends Parent {
{
System.out.println(2);
}
public Son() {
System.out.println("Son");
}
}
public class Test {
public static void main(String[] args) {
Parent p = new Son(); //或Son p = new Son();
}
}
输出:
1
Parent
2
Son
三、父类普通代码块,子类static代码块
class Parent {
{
System.out.println(1);
}
public Parent() {
System.out.println("Parent");
}
}
class Son extends Parent {
static {
System.out.println(2);
}
public Son() {
System.out.println("Son");
}
}
public class Test {
public static void main(String[] args) {
Parent p = new Son(); //或 Son p = new Son();
}
}
输出:
2
1
Parent
Son
四、父类static代码块,子类普通代码块
class Parent {
static{
System.out.println(1);
}
public Parent() {
System.out.println("Parent");
}
}
class Son extends Parent {
{
System.out.println(2);
}
public Son() {
System.out.println("Son");
}
}
public class Test {
public static void main(String[] args) {
Parent p = new Son(); //或 Son p = new Son();
}
}
输出:
1
Parent
2
Son