请告诉我,什么不能在方法超级参数中传递?为什么这段代码不能编译?
class Base {
static {
System.out.println("Static");
}
public Base(String s) {
System.out.println("Base " + s);
}
}
class Sub extends Base {
private final String Str = "Constructor";
public Sub(Str) { // Error here
super(Str);
System.out.println("Sub " + Str);
}
}
public class Application {
public static void main(String[] args) {
Base B = new Sub();
}
}
我的意思是,为什么这段代码有效:
class Sub extends Base {
public static String Str = "Constructor";
public Sub() {
super(Str);
System.out.println("Sub " + Str);
}
}
如果我将参数更改为静态?
答案 0 :(得分:2)
您使用的语法有点不对。
public Sub(Str)
应该是
public Sub(SomeTypeHere Str)
答案 1 :(得分:0)
它应该是
private final static String Str = "Constructor";
public Sub() { // Error here
super(Str);
System.out.println("Sub " + Str);
}
或
private final String Str = "Constructor";
public Sub(String mystring) { // Error here
super(mystring);
System.out.println("Sub " + Str);
}
请注意:
private final String Str = "Constructor";
public Sub(String Str) { // Error here
super(Str);
System.out.println("Sub " + Str);
}
会隐藏您的private final String Str = "Constructor";
,这可能不是您想要的。
答案 2 :(得分:0)
你想要这个
class Sub extends Base {
private final String Str = "Constructor";
public Sub(String Str) { // Error here
super(Str);
System.out.println("Sub " + Str);
}
}