java中的静态成员行为
我对Java中的以下行为感到困惑,我知道Java不可能实现静态继承,那么我如何能够调用A的B类静态成员呢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
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代码,我相信静态方法是不能被重写的。并且基类函数不能被静态方法隐藏。你是对的。通过使用相同的签名,可以隐藏带有子类的超类静态方法。但您不能通过遵循重写规则来用子类非静态方法重写超类静态方法,反之亦然。您是对的。通过使用相同的签名,可以隐藏带有子类的超类静态方法。但您不能通过遵循重写规则,用子类非静态方法重写超类静态方法,反之亦然。