【发布时间】:2016-03-26 02:32:12
【问题描述】:
在这个程序中,不需要super 来访问超类的构造函数:
class Base{
Base(){
System.out.println("Base");
}
}
public class test2 extends Base{
test2() {
//super();
System.out.print("test2");
}
public static void main(String argv[]){
test2 c = new test2();
}
}
但是这个程序需要super 并且在quest1 构造函数中给出错误提示
构造函数
quest不能应用于给定类型:需要 int,找不到参数
class Quest {
Quest(int y){
System.out.print("A:"+y);
}
}
class Quest1 extends Quest {
Quest1(int x){
//super(x+1);
System.out.print("B:"+x);
}
}
class Test {
public static void main(String argv[]){
Quest1 q = new Quest1(5);
}
}
【问题讨论】:
-
您的问题得到解答了吗?
-
@user1803551 我明白我什么时候需要超级,但是当我们需要超级时答案令人困惑。所以我没有选择一个。
-
很公平,但是你应该要求回答者澄清,这就是 cmets 的目的,解释和补充答案是他们的工作。
-
我如何将答案编辑到我的帖子末尾?当我们使用带参数的方法时,我们使用 super 对吗?如果没有像我的第一个示例那样的参数,我们不使用超级。但是,如果有像我的 2. 示例这样的参数,我们使用参数对吗?
-
不要在您的问题中包含其他人的答案。您可以编辑您的问题以使其更清晰或添加信息。关于
super(...)的用法,您可以在方法中使用它来调用被覆盖的方法,而不管参数如何。有无参数不影响super。您的问题专门针对规则与其他“常规”方法不同的构造函数,但我所说的仍然有效。
标签: java constructor arguments super