
Un constructor es un método que se ejecuta automáticamente cuando se crea un objeto de una clase. Sirve para inicializar los miembros de la clase.
El constructor tiene el mismo nombre que la clase. Cuando se define no se puede especificar un valor de retorno, nunca devuelve un valor. Sin embargo, puede tomar cualquier número de argumentos.
Reglas
- El constructor tiene el mismo nombre que la clase.
- Puede tener cero, o más argumentos.
- No tiene tipo de retorno.
Ejemplo
La clase Rectángulo tiene un constructor con cuatro parámetros.
public class Rectangulo{
private int izquierdo;
private int superior;
private int derecha;
private int inferior;
// constructor
public Rectangulo(int iz, int sr, int d, int inf){
izquierdo = iz;
superior = sr;
derecha = d;
inferior = inf;
}
// definiciones de otros métodos miembro
}
Al crear un objeto se pasan los valores de los argumentos al constructor, con la misma sintaxis que la de llamada a un método. Por ejemplo:
Rectangulo rectangulo = new Rectangulo(25, 25, 75, 75);
Se ha creado una instancia de Rectangulo, pasando valores concretos al constructor de la clase, de esta forma queda inicializado.
Constructor por defecto
Un constructor que no tiene parámetros se llama constructor por defecto. Un constructor por defecto normalmente inicializa los miembros dato de la clase con valores en forma predeterminada.
Regla
Java crea automáticamente un constructor por defecto cuando no existen otros constructores. Tal constructor inicializa las variables de tipo numérico (int, float . . .) a cero, las variables de tipo boolean a true y las referencias a null.
Ejemplo
El constructor por defecto inicializa x e y a 0.
public class Punto{
private int x;
private int y;
public Punto(){ // constructor por defecto
x = 0;
y = 0;
}
}
Cuando se crea un objeto Punto sus miembros dato se inicializan a 0.
Punto P1 = new Punto(); // P1.x es 0, P1.y es 0
Precaución
Tenga cuidado con la escritura de una clase con solo un constructor con argumentos. Si se omite un constructor sin argumento no será posible utilizar el constructor por defecto. La definición: NombreClase objeto = new NombreClase() no será posible.
Constructores sobrecargados
Al igual que se puede sobrecargar un método de una clase, también se puede sobrecargar el constructor de una clase. De hecho los constructores sobrecargados son bastante frecuentes, proporcionan diferentes alternativas de inicializar objetos.
Regla
Para prevenir a los usuarios de la clase de crear un objeto sin parámetros, se puede: 1) omitir el constructor por defecto; o bien 2) hacer el constructor privado.
Ejemplo
La clase EquipoSonido se define con tres constructores; un constructor por defecto, otro con un argumento de tipo cadena y el tercero con tres argumentos.
public class EquipoSonido {
private int potencia;
private int voltios;
private int numeroCd;
private String marca;
public EquipoSonido() { // constructor por defecto
marca = «Sin marca»;
System.out.println(«Constructor por defecto»);
}
public EquipoSonido(String mt) {
marca = mt;
System.out.println(«Constructor con argumento cadena»);
}
public EquipoSonido(String mt, int p, int v) {
marca = mt;
potencia = p;
voltios = v;
numeroCd = 20;
System.out.println(«Constructor con tres argumentos»);
}
public double factura() {. . .}
}
La instanciación de un objeto EquipoSonido puede hacerse llamada a cualquier constructor:
EquipoSonido rt, gt, ht; // define tres referencias
rt = new EquipoSonido(); // llamada al constructor por defecto
gt = new EquipoSonido(«SONY»); // llamada al constructor con argumento cadena
ht = new EquipoSonido(«LG»,35,220); // llamada al constructor con tres argumentos