我有一个基本的Java类,其定义如下。我有三个变量:l,b,h对应长度,宽度和高度。我基本上试图使用super关键字从子类访问超类的成员。
class dabbaweight extends dabba {
int w;
dabbaweight(int l, int b, int h, int w) {
// super(l, b, h);
super.l = l;
super.b = b;
super.h = h;
this.w = w;
}
void dabbashow() {
System.out.println("The variables are length:" + l + " breadth:" + b + " height:" + h + " weight:" + w + ".");
}
}
我有另一个扩展上述类的类。
public class Rando2 {
public static void main(String[] args) {
dabba mydabba1 = new dabba(1, 2, 3);
dabbaweight mydabba2 = new dabbaweight(10, 20, 30, 100);
mydabba1.dabbashow();
mydabba2.dabbashow();
}
}
我在一个单独的类中提供了main函数,如下所示。
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Implicit super constructor dabba() is undefined. Must explicitly invoke another constructor
at dabbaweight.<init>(Rando2.java:17)
at Rando2.main(Rando2.java:33)
它会产生以下错误。
/usr/bin/Rscript -e "rmarkdown::render('stats.Rmd', output_file = file.path('/tmp/stats.html'))"
这是什么错误?我怎样才能解决这个问题? 提前谢谢。
答案 0 :(得分:0)
如果超类没有默认构造函数(无参数构造函数),就像在 dabba 类中一样,相对派生类(子类)必须显式调用其中一个非默认构造函数,所以你必须删除 dabbaweight 类的构造函数的注释。
class dabbaweight extends dabba {
int w;
dabbaweight(int l, int b, int h, int w) {
super(l, b, h);
this.w = w;
}
void dabbashow() {
System.out.println("The variables are length:" + l + " breadth:" + b + " height:" + h + " weight:" + w + ".");
}
}
答案 1 :(得分:0)
更改以下代码
dabbaweight(int l, int b, int h, int w) {
// super(l, b, h);
super.l = l;
super.b = b;
super.h = h;
this.w = w;
}
喜欢下面给出的
dabbaweight(int l, int b, int h, int w) {
super(l, b, h);
this.w = w;
}