java中的静态成员行为

时间:2012-01-13 00:57:40

标签: java

我对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

4 个答案:

答案 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语言中的函数一样。