Java Language Méthodes d'héritage et de statique


Exemple

En Java, les classes parent et enfant peuvent avoir des méthodes statiques avec le même nom. Mais dans de tels cas, l'implémentation de la méthode statique dans child cache l'implémentation de la classe parente, ce n'est pas une substitution de méthode. Par exemple:

class StaticMethodTest {

  // static method and inheritance
  public static void main(String[] args) {
    Parent p = new Child();
    p.staticMethod(); // prints Inside Parent
    ((Child) p).staticMethod(); // prints Inside Child
  }

  static class Parent {
    public static void staticMethod() {
      System.out.println("Inside Parent");
    }
  }

  static class Child extends Parent {
    public static void staticMethod() {
      System.out.println("Inside Child");
    }
  }
}

Les méthodes statiques sont liées à une classe et non à une instance et cette liaison de méthode se produit au moment de la compilation. Etant donné que dans le premier appel à staticMethod() , référence de classe parent p a été utilisé, Parent la version de de staticMethod() est invoquée. En second cas, nous avons jetés p dans l' Child classe, Child de staticMethod() exécuté.