2015-04-18 2 views
0

На объекте дочернего класса доступны статические методы суперкласса, но когда мы определяем один и тот же метод в дочернем классе, теперь объект дочернего класса начинает указывать на метод дочернего класса. Эти полные звуки как переопределение, но это не так, поскольку статический метод не может переопределить. Как это происходит и что называется этой функциональностью Java?статический метод, как и другие методы, которые могут переопределить

class A extends B { 
    public static void main(String[] args) { 
     new A().method();//call class B's method if method  is not in A otherwise A's 
    } 

    /* 
    public static void method(){ 
    System.out.println("class A method"); 
    */ 
} 

class B { 
    public static void method() { 
     System.out.println("class B method"); 
    } 
} 

Это похоже на переопределение, но не. Как это работает? Извините, что из-за моего мусорного тарелки извините.

+2

@ Статические методы @Bubletan нельзя переопределить. –

+1

@LuiggiMendoza О, правда, не видел, что он был статичным, поскольку он был вызван из экземпляра. – Bubletan

+0

Возьмите senerio же для частного метода, так как в случае частного он недоступен для дочернего класса, поэтому реализация дочернего класса не является переопределяющим. Но в случае статичности, когда реализация не указана в классе дочерних классов, метод класса был доступен, но не был после того, как я даю реализацию ребенку. –

ответ

2

Поскольку A расширяет B, экземпляр A (который создается путем вызова new A()) будет иметь все методы, которые B имеет. Поэтому, если вы вызываете .method() на экземпляр A, VM ищет method() сначала в своей области, то есть динамические методы в пределах A, затем метод dyanmic в пределах B, затем статические методы в пределах A и, наконец, статические методы в пределах B. Это возможно, потому что виртуальная машина позволяет получить доступ к статическим методам с помощью ссылки this, хотя это обескураживает, поскольку это ставит под угрозу читаемость.

+0

Как я сказал, что VM смотрит сначала в дочернем классе, чем в родительском, это звучит так же, как переопределение (для нестатических методов). Где оно отличается от переопределения? –

 Смежные вопросы

  • Нет связанных вопросов^_^