您的位置:首页 > 其它

指出下列程序的正确运行结果()

2018-03-16 10:22 246 查看
public class TestStatic {

public static void main(String[] args) {
A ab = new B();
ab = new B();
}

}

class A {
static {
System.out.print("1");
}

public A() {
System.out.print("2");
}
}

class B extends A {
static {
System.out.print("a");
}

public B() {
System.out.print("b");
}
}
        A.12ab        B.ab12ab        C.ab12ab12        D.1a2b2b
答案:D



解析:用static修饰的方法或者代码块,在类加载时会加载,无需通过实例化对象就可以通过类名来调用,因为类B的父类是A,所以会先输出类A的static代码块的内容,然后再去看看其他地方有没有使用到static的地方,有的话也会先输出其内容,B类中也有static代码块,所以输出顺序仅此于父类的static,当你ab = new B();时,static代码块不会输出,因为在整个程序中,static代码块只会加载一次,之后的输出顺序为类A的构造方法,类B的构造方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐