Está en la página 1de 14

Es muy común que partes de un programa requieran

inicialización. Cada objeto que se crea requiere de


algún tipo de inicialización, para realizar esto Java
incorpora una función constructora llamada
(constructor).

Característica del constructor:


1. El constructor se llama automáticamente cuando se
declara un objeto.
2. El constructor tiene el mismo nombre de la clase.
3. No tiene tipo devuelto.
4. Puede o no tomar argumentos.

ING. R.C.G.G. 1
class miclase{
int a;

miclase(){
System.out.println("CONSTRUCTOR");
a=10;
}
void mostrar(){
System.out.println(a);
}
}

class miclase_run{
public static void main(String args[ ]){
miclase obj1=new miclase();
obj1.mostrar();
}
}
ING. R.C.G.G. 2
Un destructor es un método que se invoca
automáticamente cuando el objeto se destruye. Java
no posee destructores, porque tiene recolección de
basuras.

Un destructor es un método que es ejecutado cada


vez que se destruye (se elimina de RAM) un objeto, el
objetivo de este método es el de eliminar toda la
memoria que ocupó un objeto.

En JAVA no es necesaria la definición de


destructores (es más no existen), pues el mismo
lenguaje se encarga de la eliminación y liberación de
la memoria ocupada por un objeto, esto se realiza
cada vez que un objeto pierde todas sus referencias,
es decir cuando se sale del ámbito donde fue
declarado dicho objeto(local o global).
ING. R.C.G.G. 3
Java dispone de un elemento denominado recolector de
basura (garbage collector) que se encarga de liberar
memoria asignada a objetos que ya no se utilizan.

Aún así en ocasiones será necesario disponer de un


método que realice operaciones adicionales a la mera
liberación de memoria. Para este fin se crea un método,
denominado finalize, con las siguientes características:

protected void finalize() {


… cuerpo del destructor
}
ING. R.C.G.G. 4
class miclase{
int a;
miclase(){
System.out.println("CONSTRUCTOR");
a=10;
}
void mostrar(){
System.out.println(a);
}
protected void finalize(){
System.out.println("Finaliza"+a);
}
}
class miclase_run{
public static void main(String args[ ]){
miclase ob=new miclase();
ob.mostrar();
}
} ING. R.C.G.G. 5
class miclase{
int a;
miclase(){
System.out.println("CONSTRUCTOR");
a=10; }
void mostrar(){
System.out.println(a);
miclase o=new miclase(); }
protected void finalize(){
System.out.println("Finaliza "+a); }
}
class miclase_run{
public static void main(String args[ ]){
int i;
miclase ob=new miclase();
for (i=1; i<10000; i++)
ob.mostrar();
}
}
ING. R.C.G.G. 6
class miclase{
int a;
miclase(){
System.out.println("Inicializa clase");
a=50; }
void mostrar(){ miclase o=new miclase(); }
protected void finalize(){
System.out.println("Termina clase"); }
}
class miclase_run{
public static void main(String args[ ]){
int i;
miclase ob=new miclase();
for (i=1; i<10000; i++)
ob.mostrar();
}
}
ING. R.C.G.G. 7
Se puede pasar argumentos a un constructor de la
misma forma que a cualquier método, solo hay que
declarar los argumentos y pasarlos al método.
class ejemplo{
class ejemplo_run{
int i;
public static void main(String arg[ ]){
ejemplo obj1= new ejemplo(7);
ejemplo(int n){
i=n;
System.out.println(obj1.obtener());
}
}
int obtener(){
}
return i*i;
}
}

ING. R.C.G.G. 8
Dada la siguiente clase:
class area{
double alto, ancho ;
area1 (...);
area( );
}
Desarrolle un programa que incluya un método miembro llamado
área1 que devuelva el área de un cuadrado.
Utilice un constructor que inicialice alto y ancho en cero.
class area{ class area_run{
double alto, ancho; public static void main(String arg[ ]){
double area1(double a, double b){ double x=12.50;
alto=a; area obj1=new area();
ancho=b; System.out.println(obj1.area1(x,x));
return alto*ancho; }
} }
area ( ){
alto=0;
ancho=0;
System.out.println("inicio "+alto+ancho);
}
} ING. R.C.G.G. 9
Dada la siguiente clase
class area{
double alto, ancho ;
}
Desarrolle un programa que incluya 2 métodos miembro llamados
rectángulo y triangulo que devuelvan el área de un rectángulo y un
triangulo respectivamente.
Utilice un constructor que inicialice alto y ancho en 0;
Y un destructor que despliegue un mensaje de fin de programa.
class area{
double ancho, alto;
double rectangulo (double a, double b){
alto=a;
ancho=b;
return (alto*ancho);
}
double triangulo (double c, double d){
alto=c;
ancho=d;
return (alto*ancho)/2;
ING. R.C.G.G. 10
}
area(){
alto=0;
ancho=0;
}
protected void finalize(){
System.out.println("Fin de programa");
}
}

class area_run{
public static void main(String arg[ ]){
double x=10, y=15,d=12,f=14;
area obj1=new area();
System.out.println(obj1.rectangulo(x,y));
System.out.println(obj1.triangulo(d,f));
}
}

ING. R.C.G.G. 11
PRÁCTICA No.: 2
NOMBRE DE LA PRÁCTICA: Encapsulamiento.

PROGRAMA 11:
Desarrolle un programa que contenga una clase llamada LINE que
dibuje una línea en pantalla con asteriscos. Guarde la longitud de la
línea en una variable entera llamada len. Haga que el constructor de
LINE tome un argumento “la longitud de la línea”
Haga que el constructor almacene la longitud y dibuje la línea con
asteriscos, proporcione a LINE un destructor que de un mensaje de
“fin de programa”.

PROGRAMA 12:
Agregue al programa 6 un constructor que inicialice todos los datos
en cero y un destructor que despliegue el mensaje de “fin de
programa”.

ING. R.C.G.G. 12
PROGRAMA 13:
Agregue al programa 7 un constructor que inicialice todos los datos
en cero y un destructor que despliegue el mensaje de “fin de
programa”.

PROGRAMA 14:
Agregue al programa 8 un constructor que inicialice todos los datos
en cero y un destructor que despliegue el mensaje de “fin de
programa”.

PROGRAMA 15:
Agregue al programa 9 un constructor que inicialice todos los datos
en cero y un destructor que despliegue el mensaje de “fin de
programa”.

ING. R.C.G.G. 13
PROGRAMA 16:
Agregue al programa 10 un constructor que inicialice todos los datos
en cero y un destructor que despliegue el mensaje de “fin de
programa”.

ING. R.C.G.G. 14

También podría gustarte