Уточнение: этот вопрос касается не модификатора доступа
Подтверждено, что операторы 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 m() static method
}
public void try() {
B b = new B();
b.m(); // running A m() static method
}
}
Мой вопрос: можем ли мы сказать, что "статический метод наследуется"?
если "унаследованный" является правильным термином, если мы добавим метод в класс 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 m() static method
}
public void try() {
B b = new B();
b.m(); // running B m() static method
A a = new B();
a.m(); // running A m() static method, no polymorphism
}
}
В этом случае обратите внимание, что у нас нет полиморфизма, правильно ли сказано, что "статический метод наследуется, но не переопределяется, статический метод подкласса скрывает статический метод суперкласса"?
Последнее сомнение, для этих двух терминов, "унаследовано" и "переопределено", которое напрямую связано с термином "полиморфизм"?