Está en la página 1de 6

UNIVERSIDAD TECNOLÓGICA DE SANTIAGO

UTESA
Programación II
Prof. Fausto Martínez Jiménez

Constructores y Sobrecarga de Constructores y Métodos

Constructor es una función, método, etc, de las clases, la cual es llamada automáticamente cuando se
crea un objeto de esa clase.
Por ser métodos, los constructores podrían aceptar parámetros. Cuando en una clase no especificamos
ningún tipo de constructor, el compilador añade uno público por omisión sin parámetros, el cual
realmente no realiza ninguna función.
Características de los Constructores
 Un constructor, tiene el mismo nombre de la clase a la cual pertenece.
 No puede ser heredado.
 No retorna ningún valor (ni void, por lo tanto, no debemos especificar ningún tipo de datos.)
 Debe declararse como public, sólo en casos realmente extraordinarios será de otro tipo.
 Pueden existir varios, pero siguiendo las reglas de la sobrecarga de funciones.

Un constructor se invoca cuando se crea un objeto de la clase mediante el operador new. Si es


necesario invocarlo en otras situaciones, la llamada a un constructor solo puede realizarse desde dentro
de otro constructor de su misma clase y debe ser siempre la primera instrucción.

Declaración y uso:

Cuando se construye un objeto es necesario inicializar sus variables con valores coherentes,
imaginemos un objeto de la clase Persona cuyo atributo color de pelo al nacer sea rojo, un estado
incorrecto tras construir el objeto persona. La solución en los lenguajes orientados a objetos es emplear
los constructores.

Dentro del código de un constructor generalmente suele existir inicializaciones de variables y objetos,
para conseguir que el objeto sea creado con dichos valores iniciales. También para realizar cualquier
otro procedimiento de inicio requerido para crear un objeto completamente formado.

Para definir los constructores se emplea la siguiente sintaxis:

[modifVisibilidad] nombreConstructor (listaParámetros) [throws listaExcepciones]


{
}
UNIVERSIDAD TECNOLÓGICA DE SANTIAGO
UTESA
Programación II
Prof. Fausto Martínez Jiménez

Para modificar su Visibilidad se aplica las mismas normas que para atributos y métodos:

 public: indica que es un método accesible a través de una instancia del objeto.
 private: indica que a través de una instancia no es accesible el método. Al heredar el método se
convierte en inaccesible.
 protected: indica que a través de una instancia no es accesible el método. Al heredar si se puede
usar desde la clase derivada.
 Sin especificar: indica visibilidad de paquete, se puede acceder a través de una instancia, pero
sólo de clases que se encuentren en el mismo paquete.

Nota: El nombre del Constructor debe de coincidir con el nombre de la clase.

Lista de Parámetros es la lista de los parámetros que tomará la función separados por comas y
definidos cada uno de ellos como:
tipo nombreParámetro

La cláusula opcional throws es empleada para indicar que dentro del método se pueden
generar errores en su ejecución, y que debemos estar preparados para tratarlos.

Lista de Excepciones es el nombre de todos esos posibles errores, su utilización la veremos en


el punto dedicado a la gestión de errores mediante try y catch.

This en java

This hace referencia al objeto actual de la clase, es decir, a una instancia concreta de la clase y
nos sirve para usar los métodos y atributos de esa clase desde alguno de sus métodos, para
llamar a otro de sus constructores o simplemente para pasarle el objeto completo a algún otro
método u objeto.

El constructor posee un par de llaves, dentro de las cuales estará el código que se ejecutará al
ser llamada la función. Dicho código estará formado por instrucciones válidas en el lenguaje,
finalizadas generalmente por punto y coma.
El destructor se utiliza para destruir una instancia de una clase y liberar memoria. En Java no
hay destructores, ya que la liberación de memoria es llevada a cabo por el Garbage Collector
cuando las instancias de los objetos quedan desreferenciadas.
Programación en Java/Encapsulamiento. Java, como un lenguaje orientado a objetos,
implementa la encapsulación. Este concepto consiste en la ocultación del estado o de los datos
miembro de un objeto, de forma que sólo es posible modificar los mismos mediante los métodos
definidos para dicho objeto.
UNIVERSIDAD TECNOLÓGICA DE SANTIAGO
UTESA
Programación II
Prof. Fausto Martínez Jiménez

Ejemplos de constructores
public PrimeraClase
{ int a;
public PrimeraClase()
{
a=15;
}
} // fin Primera Clase

//**********
public class Principal
{
Public static void main (String[] args]
{
PrimeraClase p1=new PrimeraClase();
PrimeraClase p2=new PrimeraClase();

System.out.println(“ Valor de a ”+p1.a + “Valor de a “+p2.a);


System.out.println(“ Valor de a*a ”+(p1.a *p2.a));

}
} // fin clase Principal
UNIVERSIDAD TECNOLÓGICA DE SANTIAGO
UTESA
Programación II
Prof. Fausto Martínez Jiménez

Sobrecarga:

Sobrecarga de métodos y constructores en Java. En una clase, la sobrecarga (overloading) permite


definir más de un constructor o método con el mismo nombre, con la condición de que no puede haber
dos de ellos con el mismo número y tipo de parámetros.

En Java, una firma es el nombre de un método más su lista de parámetros. ... Overloading significa
que un mismo método tiene diferentes firmas. Overriding es el mismo método, misma firma, pero
diferentes clases conectadas a través de la herencia.

Cuando este es el caso, se dice que los métodos están sobrecargados, y el proceso se denomina
sobrecarga de métodos (method overloading). La sobrecarga de métodos es una de las formas en que
Java implementa polimorfismo.

En programación orientada a objetos la sobrecarga se refiere a la posibilidad de tener dos o más


funciones con el mismo nombre, pero funcionalidad diferente. Es decir, dos o más funciones con el
mismo nombre realizan acciones diferentes. El compilador usará una u otra dependiendo de los
parámetros usados.

En general, para sobrecargar un método, simplemente declare versiones diferentes de él. El compilador
se ocupa del resto. Debe observar una restricción importante: el tipo y/o el número de parámetros de
cada método sobrecargado debe diferir. No es suficiente que dos métodos difieran solo en sus tipos de
devolución.

Por supuesto, los métodos sobrecargados también pueden diferir en sus tipos de devolución. Cuando
se llama a un método sobrecargado, se ejecuta la versión del método cuyos parámetros coinciden con
los argumentos.

Ejemplo:

public class Sobrecarga


{
public void MetodoSobrecargo()
{
System.out.println(“Sin parametros\n”);
}
UNIVERSIDAD TECNOLÓGICA DE SANTIAGO
UTESA
Programación II
Prof. Fausto Martínez Jiménez

public void MetodoSobrecargo(int x)


{
System.out.println(“Un parámetro: “+x+”\n”);
}

public int MetodoSobrecargo(int x, int y)


{
System.out.println(“Dos parámetros: “+x+”,”+y+”\n”);
return (x+y);
}

public double MetodoSobrecargo(int x, int y)


{
System.out.println(“Dos parámetros tipo double: “+x+”,”+y+”\n”);
return (x+y);
}

} // fin clase Sobrecarga

//********
// Programa Principal

public class PrincipalSobrecarga


{
public static void main (String[] args)
{
Sobrecarga p=new Sobrecarga();
int sumaentero; double sumadouble;

p.MetodoSobrecargo();
p.MetodoSobrecargo(15);
sumaentero=p.MetodoSobrecargo(12,32);
System.out.println(“Resultado del MetodoSobrecargo(12,32) es: “+sumaentero+”\n”);

sumadouble=p.MetodoSobrecargo(15.52,36.14);
System.out.println(“Resultado del MetodoSobrecargo(15.52,36.14) es: “+sumadouble+”\n”);

}
}
UNIVERSIDAD TECNOLÓGICA DE SANTIAGO
UTESA
Programación II
Prof. Fausto Martínez Jiménez

Nota:

Como puede ver, MetodoSobrecargo() está sobrecargado cuatro veces. La primera versión no toma
parámetros, la segunda toma un parámetro entero, la tercera toma dos parámetros enteros (int), y la
cuarta toma dos parámetros double.

Observe que las primeras dos versiones de MetodoSobrecargo () no devuelven nada, y las otras dos
devuelven un valor. Esto es perfectamente válido, pero tal como se explicó, la sobrecarga no se ve
afectada en un sentido u otro por el tipo de devolución de un método. Por lo tanto, intentar utilizar las
dos versiones siguientes de MetodoSobrecargo() provocará un error:

public void MetodoSobrecargo(int x)


{
System.out.println(“Un parámetro: “+x+”\n”);
}

public int MetodoSobrecargo(int x)


{
System.out.println(“Un parámetro: “+x+”\n”);
return x;
}

Nota:

La diferencia en sus tipos de devolución es insuficiente para el propósito de sobrecarga.

También podría gustarte