以下代码是测试程序。为什么我不能在这个程序中使用A(int a)?
public class A {
int a;
void meth(int b) {
a+=b;
}
A(int a) {
this.a=a;
}
}
class B extends A {
int a;
void meh2(int b) {
a+=b;
}
}
为什么不能将参数传递给构造函数?是什么原因? Netbeans错误消息:
类tma1.A中的构造函数A不能应用于给定的类型; 必需:int 发现:没有争论 原因:实际和正式的参数列表长度不同
答案 0 :(得分:2)
在B类中,您需要构造函数。如果你的意思是你不能从B调用A,那只是因为你正在扩展A类,所以你需要使用super,它指的是超类。例如B可以是:
class B extends A {
B(int a) {
//You can put additional code here
// This calls the constructor of A
super(a);
//You can put additional code here
}
int a;
void meh2(int b) {
a+=b;
}
}
否则你需要在B类变量a中指定一些东西,如果你没有在代码中省略某些东西
答案 1 :(得分:1)
除非一个类有一个已定义的构造函数,否则它会自动拥有一个只调用super()
的无参数构造函数。
您的编译器的抱怨似乎是:“您的无参数构造函数[您看不到]正在调用不存在的父级无参数构造函数。”
类A
没有no-arg构造函数,因为已经定义了另一个(因此java不必创建一个)。