Constructor (informática)En Programación Orientada a Objetos (POO), un constructor es una subrutina cuya misión es inicializar un objeto de una clase. En el constructor se asignan los valores iniciales del nuevo objeto. Se utiliza para crear tablas de clases virtuales y poder así desarrollar el polimorfismo, una de las herramientas de la programación orientada a objetos. 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. JavaEn 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 devolver ningún valor (ni siquiera se puede especificar la palabra reservada Constructor por defectoUn 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 cero, los alfanuméricos a nuloPeq, y las referencias a objetos a EjemploUn constructor por defecto para la clase public SSuma() {}
Como se observa el constructor no posee ningún parámetro, ya que como no ha sido definido propiamente por el programador, Java lo hace por Si se define un constructor con parámetros (definido explícitamente) el constructor por
Sobrecarga de constructoresA continuación se creará un constructor explícito para una clase simple, utilizando una clase Primero se declara la clase con sus atributos: class Persona
{
//Atributos
private String nombre;
private int edad;
private String empleo;
private double salario;
//Constructores
public Persona() {} //Constructor sin parámetros (constructor por defecto)
public Persona(String nombre, int edad, String empleo, double salario)
{
asignarNombre(nombre);
asignarEdad(edad);
asignarEmpleo(empleo);
asignarSalario(salario);
}
//...
}
El constructor sin parámetros es reemplazado por el constructor explícito. En este ejemplo se puede observar que los constructores preferentemente se declaran públicos para que puedan ser invocados desde cualquier parte. Una línea como la que se presenta a continuación, invocará al constructor (por defecto) sin parámetros: Persona pers01 = new Persona();// invoca al constructor Persona
El operador A continuación se invocará al constructor con parámetros, que se introducirán en el orden especificado en el constructor. Persona pers02 = new Persona("Pepe Pérez", 30, "Programador", 25000);
Lo anterior permite asignar la información correspondiente a los atributos de class Persona
{
//Atributos
private String nombre;
private int edad;
private String empleo;
private double salario;
//Constructores
public Persona() {} //Constructor sin parámetros (constructor por defecto)
//2º constructor
public Persona(String nombre, int edad, String empleo, double salario)
{
asignarNombre(nombre);
asignarEdad(edad);
asignarEmpleo(empleo);
asignarSalario(salario);
}
//3er constructor
public Persona(String nombre, String empleo)
{
asignarNombre(nombre);
asignarEmpleo(empleo);
}
//4º constructor
public Persona(String nombre, int edad)
{
asignarNombre(nombre);
asignarEdad(edad);
}
//5º constructor
public Persona(int edad, String nombre)
{
asignarNombre(nombre);
asignarEdad(edad);
}
//6º constructor
public Persona(String nombre)
{
asignarNombre(nombre);
}
//...
}
El tercer, cuarto y quinto constructor parecen iguales, pero no lo son, tienen el mismo número de parámetros (en este caso dos), pero no son del mismo tipo, ya que el tercer constructor tiene ambos parámetros de tipo String, pero en el cuarto constructor uno es de tipo String y otro int, por lo tanto eso no ocasionará problemas. Tal vez pareciera que el cuarto y quinto constructor sí son iguales, pero ahora se debe tomar en cuenta el orden, en el cuarto constructor especifica que primero recibe un String y después un int, y el quinto constructor primero recibe un int y después un String, entonces en estos casos ya es importante el orden de los parámetros. Y el último constructor ejemplifica que los constructores, además del constructor por defecto, deben tener desde un parámetro hasta n número de parámetros. La invocación para los constructores anteriores, sería de la siguiente forma: Persona pers01 = new Persona();//Uso del constructor por defecto
Persona pers02 = new Persona("Pepe Pérez", 30, "Programador", 25000);//Uso del 2do constructor
Persona pers03 = new Persona("Pepe Pérez","Programador");//Uso del 3er constructor
Persona pers04 = new Persona("Pepe Pérez", 30);//Uso del 4to constructor
Persona pers04 = new Persona(30, "Pepe Pérez");//Uso del 5to constructor
Persona pers05 = new Persona("Pepe Pérez");//Uso del 6to constructor
En conclusión, al realizar la modificación para disponer de más de constructor, que es el ejemplo anterior, le llamaremos sobrecarga de métodos, es decir, consiste en definir o crear más de un constructor, en donde la diferencia será entre cada uno de ellos será el tipo de cada uno de los parámetros que reciba. |