指出下面程序的运行结果
2016-12-05 21:09
176 查看
class A {
static {
System.out.print("父类静态成员 ");
}
//初始化块,也即是非static语句块
{
System.out.print("父类非静态成员 ");
}
public A() {
System.out.print("父类构造方法 ");
}
}
class B extends A {
static {
System.out.print("子类静态成员 ");
}
{
System.out.print("子类非静态成员 ");
}
public B() {
System.out.print("子类构造方法 ");
}
}
public class Test {
public static void main(String[] args) {
A ab = new B();
System.out.println("\n---------------------------------");
ab = new B();
}
}
运行结果
结果说明
创建对象时调用顺序如下:
①先初始化父类和子类的静态成员。
②父类非静态成员。
③父类构造方法。
④子类非静态成员。
⑤子类构造方法。
另外需要注意的是,加static的语句块在加载类时就加载初始化了;不加static的语句块即初始化块,是在创建类的对象的时候才加载,在调用构造方法之前要先调用初始化块。
static {
System.out.print("父类静态成员 ");
}
//初始化块,也即是非static语句块
{
System.out.print("父类非静态成员 ");
}
public A() {
System.out.print("父类构造方法 ");
}
}
class B extends A {
static {
System.out.print("子类静态成员 ");
}
{
System.out.print("子类非静态成员 ");
}
public B() {
System.out.print("子类构造方法 ");
}
}
public class Test {
public static void main(String[] args) {
A ab = new B();
System.out.println("\n---------------------------------");
ab = new B();
}
}
运行结果
结果说明
创建对象时调用顺序如下:
①先初始化父类和子类的静态成员。
②父类非静态成员。
③父类构造方法。
④子类非静态成员。
⑤子类构造方法。
另外需要注意的是,加static的语句块在加载类时就加载初始化了;不加static的语句块即初始化块,是在创建类的对象的时候才加载,在调用构造方法之前要先调用初始化块。
相关文章推荐
- 指出下面程序的运行结果:
- Java - 指出下面程序的运行结果。
- 指出下面程序的运行结果(二)
- 指出下面程序的运行结果
- 第十五周项目一 阅读下面程序,解释运行结果(2)
- 第十五周项目一 阅读下面程序,解释运行结果(6)
- 7.1 分析并写出下面程序的运行结果
- 运行下面程序结果
- 第十三周实践项目-阅读下面的程序,并写出运行结果(2)
- Chapter9——分析下面的程序,写出其运行时的输出结果/将程序第5行改为Date(int=1,int=1,int=2005);修改程序使之能通过编译
- 指出下列程序的正确运行结果()
- 习题4.1分析并写出下面程序的运行结果
- 第十三周实践项目-阅读下面的程序,并写出运行结果(3)
- 阅读下面的程序,并写出运行结果
- 4.1.分析并写出下面程序的运行结果
- 第十五周项目一 阅读下面程序,解释运行结果(1)
- 输出下面程序运行结果
- 8.1.2分析并写出下面程序的运行结果
- 4.2.分析并写出下面程序的运行结果
- 第十五周项目一 阅读下面程序,解释运行结果(5)