由于静态方法仅限于类,为什么子类使用下面代码中超类的静态方法?
public class StaticMethodEg extends Superclass {
public static void main(String args[]) {
System.out.println(StaticMethodEg.MyStaticMethod(2313123));
}
}
class Superclass {
public static int MyStaticMethod(int i) {
Integer value = new Integer(i);
return value + 1234;
}
}
输出
2314357
答案 0 :(得分:0)
您的代码未编译
System.out.println(StaticMethodEg.MyStaticMethod(2313123));
你必须这样做
System.out.println(Superclass.MyStaticMethod(2313123));
由于静态方法仅限于类...
不是真的,该方法是公开的,所以 StaticMethodEg 类也可以访问该方法!
答案 1 :(得分:0)
不, public
static
方法可以在任何地方使用,不仅可以在声明的类中使用。
static
方法也是继承的(如非静态方法),有关详细信息,请参阅this question。在您的情况下,MyStaticMethod
类会继承StaticMethodEg
,因为它extends Superclass
。
答案 2 :(得分:0)
静态方法是可继承的但不可覆盖 因此,子类参见父类的公共静态方法。
StaticMethodEg.MyStaticMethod(2313123)
是合法的,但确实具有误导性,因为它可能会让人觉得StaticMethodEg
类有MyStaticMethod(int)
隐藏父级的静态方法。但事实并非如此。
Superclass.MyStaticMethod(2313123)
更清楚。