我正在处理我正在处理的问题集中的一个“扩展”问题——我想我只是有一个障碍,因为它被写成故意混淆。这是给我的问题:
class A {
int x;
A(int a) {System.out.println(" class A");}
}
class B extends A {
int x;
B() {System.out.println(" class B");}
public static void main (String [] args) {
A a = new B();
}
}
当我编译时,我从控制台中踢出以下错误:
cannot find symbol
symbol : constructor A()
location: class A
B() {System.out.println(" class B");}
^
而且我应该能够在不触及 A 类的情况下修复 B 类中的这个错误。我显然遗漏了一些非常明显的东西,但是我已经尝试了一个小时我能想到的所有东西的排列,但没有任何效果。
到目前为止,我已经尝试过:
- 在 B() 前面抛出一个 void - 同样的错误。
- 将 B() 变成 A(int a) - 后者返回一个无效的方法声明错误(在它前面添加一个 void 让我回到原来的“找不到符号”错误)
- 使 B() B(int a) - 相同的错误,加上抛出一个额外的“找不到符号”错误,因为我现在已经废弃了 B() 声明。
- 使 B 类将 A 扩展为 B 类扩展 A(int A) - 引发九个错误。显然不是答案。
- 将 A 的类名更改为 Apple 只是为了看看这是否会给我一个答案 - 这希望我在 Apple 类的 A(int a) 前面添加一个空白,这是我做不到的。
我到底在这里想念什么?这不完全是一个高级课程,所以它不可能是非常复杂的东西,但这让我完全疯了。任何帮助将不胜感激。