我只是用
Java开始我的故事,但是我对
Python有一些OOP经验.我有以下类层次结构:
class A {
public A() {};
public A(final java.util.Map dict) {};
}
class B extends A {
}
public class Main {
public static void main() {
java.util.Map d = new java.util.HashMap();
B b = new B(d);
}
}
附加的代码导致以下错误:
Main.java:16: error: constructor B in class B cannot be applied to given types;
B b = new B(d);
^
required: no arguments
found: Map
reason: actual and formal argument lists differ in length
1 error
我期望的是,因为必需的构造函数已经在基类中定义,所以不需要定义另一个构造函数.为什么我需要为子类定义一个,因为除了调用super()之外,它们没有做任何特殊的事情?有什么特别的原因,为什么java编译器要我在子类中定义构造函数?