RSS

Orientación a objetos (III) – Sobrecarga Constructores

09 May

Sobrecarga de constructores

Una clase puede definir varios constructores para permitir inicializar un objeto con más o menos atributos.
Podríamos tener un constructor sin argumentos para crear un objeto con unos atributos por defecto y varios constructores con argumentos dependiendo de a qué atributos queramos dar valor.

Por ejemplo, para la clase Tecnico:

 public class Tecnico{
 public static final double SALARIO_BASE = 600;
 private String nombre;
 private int departamento;
 private float sueldo;

public Tecnico(){   //Constructor sin parámetros.
 nombre = "";
 departamento = 0;
 sueldo = SALARIO_BASE;
 }

public Tecnico(String nombre, int departamento, float sueldo){   //Constructor con todos los parámetros.
 this.nombre = nombre;
 this.departamento = departamento;
 this.sueldo = sueldo;
 }

public Tecnico(String nombre, float sueldo){   //Constructor con tres parámetros, que utiliza this().
 this(nombre, 0, sueldo);
 }

}

El primer constructor sin parámetros inicializa todos los atributos con valores por defecto para nombre, departamento y sueldo.

El segundo constructor tiene parámetros para cada atributo de Tecnico.
El tercer constructor tiene dos parámetros, nombre y sueldo. La referencia this se utiliza como forma de envío de llamada a otro constructor (siempre dentro de la misma clase), en este caso el segundo constructor.

Es decir en esta llamada:

Tecnico t3 = new Tecnico (“Jose Luis”, 1300.50f);
Estaremos invocando al constructor con tres parámetros así:  Tecnico(“Jose Luis”, 0, 1300.50f)

Los constructores no se heredan

Aunque las subclases heredan todos los métodos y variables de sus superclases, no heredan sus constructores.

Las clases sólo pueden obtener un constructor de dos formas: debe escribirlo el programador o, si éste no lo escribe, debe usar el constructor predeterminado. Siempre se llama al constructor del nivel superior además de llamar al constructor subordinado.

Llamada a constructores de nivel superior

Puede llamar a un determinado constructor de una superclase como parte de la inicialización de una subclase utilizando la palabra clave super en la primera línea del constructor de la subclase. Es preciso suministrar los argumentos adecuados a super().

Cuando no hay ninguna llamada a super con argumentos, se llama implícitamente al constructor de la superclase que tenga cero argumentos. Si en la superclase no hubiera un constructor sin argumentos se produciría un error de compilación.

La llamada super() puede adoptar cualquier cantidad de argumentos adecuados para los distintos constructores disponibles en la superclase, pero debe ser la primera sentencia del constructor.

Recordar:

  • Si se utilizan, es preciso que super o this sean la primera línea del constructor.
  • Si un constructor no contiene ninguna llamada a super(…) ni a this(…), el compilador introduce una llamada al constructor de la superclase sin argumentos.
  • Otros constructores pueden llamar también a super(…) o this(…), con lo que iríamos encadenando llamadas a constructores. Al final el constructor de la clase de nivel superior se ejecutará antes que ningún otro constructor subordinado.
  • Un constructor nunca puede tener ambas llamadas super(…) y this(…).


Anuncios
 
1 comentario

Publicado por en 9 mayo, 2011 en Estudio, Tema 2

 

Etiquetas: , , , ,

Una respuesta a “Orientación a objetos (III) – Sobrecarga Constructores

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: