Código
package com.example.demo; public class MyClass { C obj1 = new C(); obj1.mostrar(); A a = new A(); // a.mostrar(); } } class A { public A() { } public void mostrar() { } } class B extends A { public B() { } @Override public void mostrar() { } } class C extends B { public C() { } @Override public void mostrar() { } }
- La linea 36 es la que se mostrará actualmente, porque tu estas sobreescribiendo el metodo mostrar con una implementacion tuya.
Podria ser otro caso en donde la clase C extienda a la clase A para reusar la implementacion que tiene la clase A
Código
class C extends A { }
El resultado seria
Código
soy la A
Otro caso, aqui invoca al metodo mostrar de la clase superior B
Código
class C extends B { public C() { } @Override public void mostrar() { super.mostrar(); } }
Otro caso, por ejemplo añadiendo un metodo estatico en tu clase A
Código
class A { public A() { } public void mostrar() { } public static void mostrar2() { } }
Clase C ahora.
Código
class C extends B { public C() { } @Override public void mostrar() { A.mostrar2(); } }