public class B extends A{
public static void main(String[] args) {
new B().privateMethod();//no error -output B-privateMethod.Sounds like overriding
new B().staticMethod(); //no error -output B-StaticMethod.Sounds like overriding
}
private void privateMethod() {
System.out.println("B-privateMethod.");
}
static void staticMethod() {
System.out.println("B-StaticMethod.");
}
}
class A{
private void privateMethod() {
System.out.println("A-privateMethod.");
}
static void staticMethod() {
System.out.println("A-StaticMethod.");
}
}
На R & DI найдено в случае privateMethod() - так как этот метод не был доступен на объекте класса ребенка так класс ребенка и родительский класс privateMethod() отдельный метод, и они не имеют никакого отношения, так что это не переопределяет , , но в случае staticMethod() - метод родительского класса был доступен на объекте дочернего класса, и когда мы определяем это в дочернем классе, объект дочернего класса начинает указывать на метод дочернего класса. Это похоже на переопределение метода, но нет, поскольку статический метод не переопределяет.поведение статического и частного методов при вызове direct на объекте дочернего класса звучит как переопределение?
Как обрабатывается статический метод с помощью набора java developmentement?
Статические элементы не переопределены, они скрыты. новый B(). staticMethod(); => Это неправильный подход. вы заставите других полагать, что это метод экземпляра. Правильный способ вызова этого метода: B.staticMethod(); – Stultuske