我对Java中的行为感到困惑,我知道静态继承不可能Java那么我怎么能调用A类的B类静态成员?
public class A {
static int staticVariable = 5;
public static void staticMethod(){
System.out.println("A");
}
}
public class B extends A{}
public class C {
public static void main(String[] args) {
A.staticMethod();
B.staticMethod();
System.out.printf("A's int value %d and B's int value is %d",A.staticVariable,B.staticVariable);
}
}
输出:
A
A
A's int value 5 and B's int value is 5
答案 0 :(得分:2)
你在这里做的不是“静态继承”,无论这意味着什么,而是普通的旧名称解析(在编译时)。这样做是为了除了在B本身中定义的名称之外,您可以在任何地方使用B来限定名称,除了B本身定义的名称。
答案 1 :(得分:1)
正如您的示例所示,继承static
成员是。多态static
函数是不可能的,因此B
无法覆盖A
的{{1}}。
答案 2 :(得分:1)
对于类方法,运行时系统调用在调用方法的引用的编译时类型中定义的方法。对于实例方法,运行时系统调用在调用该方法的引用的运行时类型中定义的方法。
阅读本文了解更多详情:http://krsethur.wordpress.com/2005/12/15/static-method-inheritance/
答案 3 :(得分:0)
我认为静态方法/变量就像OP语言中的函数一样。