Rompecabezas de sobrecarga de funciones/constructores de Java

Predecir la salida del programa

public class GFG {
    private GFG(Object o) {
        System.out.println("Object");
    }
    private GFG(double[] d) {
        System.out.println("double array");
    }
    public static void main(String[] args) {
        new GFG(null);
    }
}

Solución:
el parámetro pasado al constructor es la referencia de objeto nulo y las arrays también son tipos de referencia. Si intentamos ejecutar el programa, obtenemos seguimiento.
El programa imprime array doble .

Podemos notar que el compilador no causa un error de llamada ambiguo. El proceso de resolución de sobrecarga de Java opera en dos fases.
La primera fase selecciona todos los métodos o constructores que son accesibles y aplicables.
La segunda fase selecciona el más específico de los métodos o constructores seleccionados en la primera fase. Un método o constructor es menos específico que otro si puede aceptar cualquier parámetro pasado al otro.
En nuestro programa, ambos constructores son accesibles y aplicables. El constructor GFG(Object) acepta cualquier parámetro pasado a GFG(double[]), por lo que GFG(Object) es menos específico. (Cada array doble es un Objeto, pero no todos los Objetos son una array doble).

Este artículo es una contribución de Shubham Juneja . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

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 *