Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的静态成员行为_Java - Fatal编程技术网

java中的静态成员行为

java中的静态成员行为,java,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(Strin

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

如您的示例所示,可以继承
静态成员。多态
静态
函数是不可能的,因此
B
不可能覆盖
A
staticMethod()
继承
静态
成员,如您的示例所示。多态的
静态
函数是不可能的,因此
B
不可能覆盖
A
staticMethod()
对于类方法,运行时系统调用调用该方法的引用的编译时类型中定义的方法。例如,对于实例方法,运行时系统调用在调用该方法的引用的运行时类型中定义的方法


阅读本文了解更多详细信息:

对于类方法,运行时系统调用在调用该方法的引用的编译时类型中定义的方法。例如,对于实例方法,运行时系统调用在调用该方法的引用的运行时类型中定义的方法


阅读本文了解更多详细信息:

这里所做的不是“静态继承”,而是简单的旧名称解析(在编译时)。这样做的目的是,除了在B本身中定义的名称外,您可以在任何放置a的地方使用B来限定名称。

这里所做的不是“静态继承”,而是简单的旧名称解析(在编译时)。这项工作的目的是,除了在B本身中定义的名称外,您可以在任何地方使用B来限定名称。

我认为静态方法/变量类似于OP语言中的函数。

我认为静态方法/变量类似于OP语言中的函数。

我认为“静态继承”并不是指您所认为的功能。以上是完全合法的Java代码,我相信静态方法是不能被重写的。基类函数不能被静态方法隐藏。我认为“静态继承”并不是指你所认为的那样。以上是完全合法的Java代码,我相信静态方法是不能被重写的。并且基类函数不能被静态方法隐藏。你是对的。通过使用相同的签名,可以隐藏带有子类的超类静态方法。但您不能通过遵循重写规则来用子类非静态方法重写超类静态方法,反之亦然。您是对的。通过使用相同的签名,可以隐藏带有子类的超类静态方法。但您不能通过遵循重写规则,用子类非静态方法重写超类静态方法,反之亦然。