java抽象类,没有在超类中调用构造函数,为什么?

use*_*362 0 java constructor class abstract

下面是一个简单的例子.我有两个抽象类,A以及B,一个具体的类,C,它包括抽象方法.

当我创建一个新的C,我期望看到的构造函数AB被调用.知道他们为什么不被召唤?

//Q.java
class Q {
    abstract class A {
        A() {
            System.out.println("in A");
        }
        public abstract void sayHi();
    }
    abstract class B extends A {
        B() {
            super();
            System.out.println("in B");
        }
    }
    class C {
        C() {
            super();
            System.out.println("in C");
        }
        public void sayHi() {
            System.out.println("Hi!");
        }
    }

    Q() {
        C Ccc = new C();
    }

    public static void main(String[] args) {
        Q z = new Q();
    }
}
Run Code Online (Sandbox Code Playgroud)

Woo*_*Moo 6

因为超级cObject

进一步的类名以大写字母开头 A,B,C,etc

如果你想同时看到ab调用,请执行以下操作:

class c extends b
Run Code Online (Sandbox Code Playgroud)