method - override java definition




¿Qué método está anulado? (5)

run() método run() de la interfaz B se implementará en la clase Main mediante el método reemplazado de la clase A.

Agregar un punto extra,

No escribirás el método run() en la clase secundaria Main , no obtendrás el conocido error "Unimplemented methods". Esto es cierto para public métodos public de clase A para métodos no públicos. Obtendrá error de compilación: el método heredado no puede ocultar el método abstracto público.

Esto se debe a que los métodos de interfaz son públicos por defecto y no se puede ocultar con el modificador de acceso default (package private) .

Muestra:

class A{
    public void run() {
        System.out.println("This method will be inherited.");
    }
}

interface B{
    void run();
}

class Main extends A implements B{
    public static void main(String args[]){         
        Main m = new Main();
        m.run();
    }
}

OUTPUT : This method will be inherited.

En la instancia de código anterior, el método run() se hereda de la clase A que implementará el método run() de la interfaz B.

Esta pregunta ya tiene una respuesta aquí:

Class A tiene el método run() y la interfaz B también tiene el método run() . La pregunta es simple, ¿qué método run() está anulado en Main clase Main y cómo lo probaremos? ¿Por qué no hay conflicto (error de tiempo de compilación) en este código?

class A{
    void run(){System.out.println("A class");}
}

interface B{
    void run();
}

class Main extends A implements B{
    public static void main(String args[]){         
        Main m = new Main();
        m.run();
    }

    // Overridding method
    public void run(){
        System.out.println("run method");
    }
}

El método de la superclase siempre se denomina método overridden , mientras que el método de la subclase se llama método de overriding .

El método final cannot be anulado . [si el método de la superclase es final]
Los métodos finales can anular . [Léelo como una forma gramatical. Este método está en la subclase y es final, pero el método de la superclase no es final]


Lo que se llamará es

public void run(){
    System.out.println("run method");
}

¿Por qué?

Está implementando la run de la interface B y también está anulando la implementación A de la misma.

Si elimina la última implementación de run() y elimina los implements B , se run() de A



se anula la run de B se implementa la run de B Como B es una interfaz, solo establece cómo se comportan sus objetos ante los demás y no aplica ningún comportamiento en sí mismo.







override