¿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. Hay varios tipos de constructores, pero un constructor predeterminado debe cumplir uno de 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 informáticos especifican implícitamente un constructor nular predeterminado si el programador no especifica ningún constructor. 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 se debe llamar correctamente un constructor de superclase disponible, quizás pasándole valores predeterminados únicos para la subclase.

La generación implícita de un constructor nular predeterminado tiene la ventaja de reducir el número 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 cualquiera 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 de estilo por parte del programador. Si se incluye el constructor, la mayoría de las escuelas de pensamiento dictan que debe comentarse y documentarse como lo haría cualquier otro constructor o método.

Cualquier constructor predeterminado puede tener modificadores de acceso adjuntos, lo que hace 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 de otra clase, mientras que un constructor protegido solo se puede llamar desde su propia clase y cualquier subclases. 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 algún tipo de método de fábrica está disponible para llamarlo, en lugar del programador.