class Parent {
private String name = setName();
private static Parent p = new Parent("父类");
public Parent() {
}
public Parent(String name) {
System.out.println("父类构造器");
this.name = name;
}
/**
* @return
*/
protected String setName() {
System.out.println("父类非static变量进行赋值");
return "aaa";
}
static {
p = new Parent("ghl");
System.out.println("父类static");
}
public void getName() {
System.out.println(name);
}
public void eat() {
System.out.println("父类方法");
}
}
class Child extends Parent{
private String name = setName();
private static Child c = new Child("子类");
public Child() {
}
public Child(String name) {
super(name);
System.out.println("子类构造器");
this.name = name;
}
protected String setName() {
System.out.println("子类非static变量进行赋值");
return "bbb";
}
static {
System.out.println("子类static");
}
public void getName() {
System.out.println(name);
}
public void eat() {
System.out.println("子类方法");
}
public static void main(String[] args) {
Child c = new Child();
}
}
运行结果:
父类非static变量进行赋值
父类构造器
父类非static变量进行赋值
父类构造器
父类static
子类非static变量进行赋值
父类构造器
子类非static变量进行赋值
子类构造器
子类static
子类非static变量进行赋值
子类非static变量进行赋值
本文通过一个Java程序示例,详细解析了父类和子类之间的继承关系,包括构造方法的调用顺序、静态代码块的执行时机以及成员变量的初始化过程。
1万+

被折叠的 条评论
为什么被折叠?



