2017-04-26 90 views
-1

我正在重新审视java的概念。所以,我期待在这个例子中具有继承性的静态块

class A { 
    A() {System.out.print("CA");} 
    static {System.out.print("SA");} 
} 
class B extends A { 
    B() {System.out.print("CB");} 
    static {System.out.print("SB");} 
    public static void main(String[] args) { 
     B b = new B(); 
    } 
} 

输出这里是SASBCACB

所以我不明白为什么打印CA消息,因为A类的构造函数没有被调用。

我的问题是一种基本的Java,但它更好地知道事情而不是空白。

+1

B中的构造函数隐式调用了A的构造函数super() –

回答

1

A在创建B时被实例化,这就是继承的工作原理。