嘿伙计们,我正处理一个带有"扩展"问题的地狱问题我正在研究的问题集中的问题 - 我想我只是因为它被写成有目的地混淆了.这是我得到的问题:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
当我编译时,我从控制台中得到以下错误:
cannot find symbol
symbol : constructor A()
location: class A
B() {System.out.println(" class B");}
^
Run Code Online (Sandbox Code Playgroud)
而且我应该能够在没有触及A类的情况下修复B级中的这个错误.我显然错过了一些愚蠢明显的东西,但我已经尝试了一小时内我能想到的所有东西的排列而没有任何工作.
到目前为止,我已经尝试过:
我到底在这里错过了什么?这不是一个高级课程,所以它不能是一个非常复杂的东西,但这让我完全疯了.任何帮助将不胜感激.
在派生类中,您需要调用基类构造函数.如果不明确地执行此操作,编译器将尝试插入对无参数构造函数的调用 - 如果基类中不存在,则会出现该错误.
解决方案是使用一些值显式调用基类构造函数:
B() {
super(0);
System.out.println(" class B");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1358 次 |
| 最近记录: |