elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  se puede llamar el metodo de la clase superior en herencia mulltinivel?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: se puede llamar el metodo de la clase superior en herencia mulltinivel?  (Leído 2,586 veces)
Pedro122h

Desconectado Desconectado

Mensajes: 168


Ver Perfil
se puede llamar el metodo de la clase superior en herencia mulltinivel?
« en: 27 Abril 2022, 04:40 am »

hola tengo una duda como se puede llamar el metodo superior en una herencia multinivel?.
en el siguiente codigo por ejemplo quiero llamar el metodo mostrar() de la clase A desde la clase C que deriva de la clase B y esta a su vez deriva de la clase A:
Código
  1. public class MyClass {
  2.    public static void main(String args[]) {
  3.  
  4.     C obj1=new C();
  5.     obj1.mostrar();
  6.    }
  7. }
  8. class A{
  9. public void mostrar(){
  10.  
  11. System.out.println("soy la A");
  12.  
  13. }
  14. public A(){
  15.  
  16.  
  17. }
  18. }
  19. class B extends A{
  20. public void mostrar(){
  21.  
  22. System.out.println("soy la B");
  23.  
  24. }
  25. public B(){
  26.  
  27.  
  28. }
  29. }
  30. class C extends B{
  31.    public void mostrar(){
  32.  
  33. System.out.println("soy la C ");
  34.  
  35. }
  36. }
  37.  
es una pregunta que me surgio al explorar la herencia en java, al compararlo con c++ se podria hacer facilmente con A::mostrar()
pero no encuentro info sobre como hacerlo en java


En línea

rub'n


Desconectado Desconectado

Mensajes: 1.217


(e -> λ("live now")); tatuar -> λ("α");


Ver Perfil WWW
Re: se puede llamar el metodo de la clase superior en herencia mulltinivel?
« Respuesta #1 en: 27 Abril 2022, 14:25 pm »

Formatea el codigo un poco mas socio

Código
  1. package com.example.demo;
  2.  
  3. public class MyClass {
  4.  
  5.    public static void main(String args[]) {
  6.  
  7.        C obj1 = new C();
  8.        obj1.mostrar();
  9.  
  10.        A a = new A();
  11. //      a.mostrar();
  12.    }
  13. }
  14.  
  15. class A {
  16.    public A() {
  17.    }
  18.    public void mostrar() {
  19.        System.out.println("soy la A");
  20.    }
  21. }
  22.  
  23. class B extends A {
  24.    public B() {
  25.    }
  26.    @Override
  27.    public void mostrar() {
  28.        System.out.println("soy la B");
  29.    }
  30. }
  31.  
  32. class C extends B {
  33.    public C() {  
  34.    }
  35.    @Override
  36.    public void mostrar() {
  37.        System.out.println("soy la C ");
  38.    }
  39. }
  40.  

- 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
  1. class C extends A {
  2.  
  3. }

El resultado seria

Código
  1. soy la A


Otro caso, aqui invoca al metodo mostrar de la clase superior B

Código
  1. class C extends B {
  2.    public C() {
  3.  
  4.    }
  5.  
  6.    @Override
  7.    public void mostrar() {
  8.        super.mostrar();
  9.    }
  10. }
  11.  


Otro caso, por ejemplo añadiendo un metodo estatico en tu clase A

Código
  1. class A {
  2.    public A() {
  3.    }
  4.    public void mostrar() {
  5.        System.out.println("soy la A");
  6.    }
  7.  
  8.    public static void mostrar2() {
  9.        System.out.println("soy la A pero static");
  10.    }
  11. }
  12.  

Clase C ahora.


Código
  1. class C extends B {
  2.    public C() {
  3.  
  4.    }
  5.  
  6.    @Override
  7.    public void mostrar() {
  8.        A.mostrar2();
  9.    }
  10. }


« Última modificación: 27 Abril 2022, 14:31 pm por rub'n » En línea

rubn0x52.com KNOWLEDGE  SHOULD BE FREE.
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen king
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines