¿Qué es un constructor predeterminado?
Un constructor predeterminado es un método especializado que crea e inicializa un objeto en la programación orientada a objetos. Existen múltiples tipos de constructores, pero un constructor predeterminado debe cumplir uno de los dos criterios específicos, además de crear e inicializar un objeto. No debe tener parámetros, en cuyo caso también podría llamarse un constructor nular, o debe asignar valores predeterminados a todos los parámetros que tiene la capacidad de establecer. Algunos lenguajes de computadora especifican implícitamente un constructor nular predeterminado si el programador no especifica un constructor en absoluto. Una vez que se escribe cualquier tipo de constructor, el constructor nular predeterminado ya no se especifica y debe escribirse explícitamente si es necesario.
Para los lenguajes de computadora que permiten la herencia orientada a objetos, los constructores predeterminados en las subclases deben estar conectados con precisión a los constructores en las superclases. Los constructores de subclase siempre deben llamar a los constructores de superclase antes de hacer algo específico para la subclase. En algunos lenguajes, como Java®, un constructor de subclase llama implícitamente a un constructor nular predeterminado de superclase. Si no existe un constructor nular predeterminado de superclase, el objeto de subclase no se puede construir correctamente. Las subclases aún pueden tener cualquier tipo de constructor predeterminado en este caso, pero un constructor de superclase disponible debe llamarse correctamente, quizás pasando valores predeterminados únicos a la subclase.
La generación implícita de un constructor nular predeterminado tiene la ventaja de reducir la cantidad de métodos que un programador debe especificar y documentar, pero también tiene la desventaja de posiblemente dificultar el mantenimiento y la comprensión del código. Algunos programadores consideran que la omisión de un constructor predeterminado es una mala práctica, mientras que otros no. No hay nada que impida que un programador individual se adhiera a ninguno de estos métodos de programación, por lo que incluir un constructor nular predeterminado en el código es en gran medida una elección estilística por parte del programador. Si se incluye el constructor, la mayoría de las escuelas de pensamiento dictan que debe ser comentado y documentado como cualquier otro constructor o método.
Cualquier constructor predeterminado puede tener modificadores de acceso adjuntos, haciendo que el constructor sea público, protegido o privado. Esto le da al constructor habilidades específicas basadas en la clase en la que se especifica. Se puede usar un constructor público predeterminado para crear un nuevo objeto desde otra clase, mientras que un constructor protegido solo se puede llamar desde su propia clase y cualquier subclase. Los constructores predeterminados protegidos se ven a menudo en una jerarquía de herencia. Los constructores privados generalmente se emplean solo en clases autónomas, donde hay algún tipo de método de fábrica disponible para llamarlo, en lugar del programador.