“继承”是解释超类的静态方法的正确术语,可以由子类访问吗?
澄清:此问题与访问修饰符无关
确认 B.m() 和 b.m() 语句在以下代码中均有效:
class A {
static void m() { //some code }
}
class B extends A {
}
class Example {
public static void main (String [] args) {
B.m(); // running A's m() static method
}
public void try() {
B b = new B();
b.m(); // running A's m() static method
}
}
我的问题是,我们能说“静态方法是继承的”吗?
如果“inherited”是正确的术语,如果我们向B类添加一个方法,我们将静态类的签名相同:
class A {
static void m() { //some code }
}
class B extends A {
static void m() { //some code }
}
class Example {
public static void main (String [] args) {
B.m(); // running B's m() static method
}
public void try() {
B b = new B();
b.m(); // running B's m() static method
A a = new B();
a.m(); // running A's m() static method, no polymorphism
}
}
在这种情况下,请注意我们没有多态性,说“静态方法被继承但不被覆盖,子类静态方法隐藏超类静态方法”是正确的术语吗?
最后一个疑问,对于这两个术语,“继承”和“覆盖”,哪一个与术语“多态性”直接相关?