Sombreado de funciones estáticas en Java

En Java, si el nombre de una función estática de clase derivada es el mismo que el de una función estática de clase base, la función estática de clase base oscurece (u oculta) la función estática de clase derivada. Por ejemplo, el siguiente código Java imprime «A.fun()» 
. el método del objeto. 
 

Java

// file name: Main.java
 
// Parent class
class A {
    static void fun() { System.out.println("A.fun()"); }
}
 
// B is inheriting A
// Child class
class B extends A {
    static void fun() { System.out.println("B.fun()"); }
}
 
// Driver Method
public class Main {
    public static void main(String args[])
    {
        A a = new B();
        a.fun(); // prints A.fun();
 
        // B a = new B();
        // a.fun(); // prints B.fun()
 
        // the variable type decides the method
        // being invoked, not the assigned object type
    }
}
Producción

A.fun()

Nota: si hacemos que tanto A.fun() como B.fun() sean no estáticos, el programa anterior imprimiría «B.fun()». Si bien ambos métodos son tipos estáticos, el tipo de variable decide el método que se invoca, no el tipo de objeto asignado.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *