Constructores
Enviado por alemeza • 23 de Mayo de 2013 • 1.200 Palabras (5 Páginas) • 347 Visitas
¿Qué es un Constructor?
El objetivo de un constructor es el de inicializar un objeto cuando éste es creado. Asignaremos los valores iniciales así como los procesos que ésta clase deba realizar.
Se utiliza para crear tablas de métodos virtuales y poder así desarrollar el polimorfismo, una de las herramientas de la programación orientada a objetos (POO). Al utilizar un constructor, el compilador determina cual de los objetos va a responder al mensaje (virtual) que hemos creado. Tiene un tipo de acceso, un nombre y un paréntesis.
En java es un método especial dentro de una clase, que se llama automáticamente cada vez que se crea un objeto de esa clase.
Posee el mismo nombre de la clase a la cual pertenece y no puede regresar ningún valor (ni siquiera se puede especificar la palabra reservada void). Por ejemplo si añadiéramos a la clase Suma un constructor, tendríamos que llamarlo también Suma. Cuando en una clase no se escribe propiamente un constructor, java asume uno por defecto (que es el Constructor vacío, es decir sin parámetros).
Constructor por defecto:
Un constructor por defecto es un constructor sin parámetros que no hace nada. Sin embargo será invocado cada vez que se construya un objeto sin especificar ningún argumento, en cuyo caso el objeto será iniciado con los valores predeterminados por el sistema (los atributos numéricos a ceros, los alfanuméricos a nulos, y las referencias a objetos a null).
Constructor con Parámetros:
Un constructor con Parámetros siempre debe especificar algún argumento, en cuyo caso el objeto será iniciado con los valores indicados por el usuario, y realizará también las acciones programadas al ejecutarse.
Por defecto toda clase tiene un constructor sin parámetros cuyo identificador coincide con el de la clase y que, al ejecutarse, inicializa el valor de cada atributo de la nueva instancia: los atributos de tipo primitivo se inicializan a 0 o false, mientras que los atributos de tipo objeto (referencia) se inicializan a null.
En el ejemplo de la clase PruebaPrecio, que utiliza una instancia de la clase Precio, la llamada al constructor se produce en la sentencia p = new Precio();. Mientras que la ejecución de new genera una nueva instancia y devuelve su dirección de memoria, la ejecución del constructor Precio() inicializa los valores de los atributos (Figura 13.1)
public class PruebaPrecio {
public static void main (String [] args ) {
Precio p; // Crea una referencia de la clase Precio
p = new Precio(); // Crea el objeto de la clase Precio y realiza
// una llamada al metodo constructor
// Resto del codigo ...
}
}
Figura 13.1. Resultado de la ejecución del constructor: inicialización de los atributos del nuevo objeto
13.2. Declaración de un constructor
La declaración de un constructor diferente del constructor por defecto, obliga a que se le asigne el mismo identificador que la clase y que no se indique de forma explícita un tipo de valor de retorno. La existencia o no de parámetros es opcional. Por otro lado, la sobrecarga permite que puedan declararse varios constructores (con el mismo identificador que el de la clase), siempre y 146 A. García-Beltrán y J.M. Arranz cuando tengan un tipo y/o número de parámetros distinto. Por ejemplo, para la clase Fecha se declaran dos constructores, el primero sin parámetros (por lo tanto se redefine el constructor por defecto) y el segundo con tres parámetros:
/**
* Declaracion de la clase Fecha
* @author A. Garcia-Beltran
* Ultima revision: noviembre, 2008
*/
public class Fecha {
// Atributos o variables miembro
private int dia;
private int mes;
private int anho;
/**
* Constructor 1
* Asigna los valores 1, 1 y 2000 a los atributos
* dia, mes y anho respectivamente
*/
public Fecha() {
dia = 1;
mes = 1;
anho = 2000;
}
/**
* Constructor 2
* @param ndia el dia del mes a almacenar
* @param nmes el mes del anho a almacenar
* @param nanho el anho a almacenar
*/
public Fecha(int ndia, int nmes, int nanho) {
dia = ndia;
mes = nmes;
anho = nanho;
}
public String toString()
...