Está en la página 1de 4

Estrella Herrera Joseph Flix Mtodo constructor y mtodo destructor

12590392

Los constructores son mtodos especiales que se ejecutan cuando se crea un objeto y que se utilizan para iniciar las propiedades del objeto. Los constructores no tienen valor de retorno (en realidad devuelven una referencia al objeto que se crea). Los constructores se distinguen porque tienen el mismo nombre que la clase a la que pertenecen y como todos los mtodos pueden tener parmetros. Adems, una clase puede tener varios constructores, aunque no puede tener dos constructores que reciban los mismos parmetros (el mismo nmero de parmetros, de los mismos tipos y en el mismo orden). Si en el cdigo fuente de una clase no se define ningn constructor, Java al compilar, aade un constructor por defecto vaco que no tiene parmetros. Este constructor es preciso para poder crear objetos de la clase. Cuando en el cdigo de una clase se define uno o ms constructores Java no aade ningn constructor por defecto. Un constructor es un mtodo perteneciente a la clase que posee unas caractersticas especiales: . Se llama igual que la clase. . No devuelve nada, ni siquiera void. . Pueden existir varios, pero siguiendo las reglas el mismo nmero de parmetros, de los mismos tipos y en el mismo orden. . De entre los que existan, tan slo uno se ejecutar al crear un objeto de la clase. . Dentro del cdigo de un constructor generalmente suele existir inicializaciones de variables y objetos, para conseguir que el objeto sea creado con dichos valores iniciales. La destruccin de objetos se realiza de manera automtica mediante un mecanismo conocido como la recoleccin de basura. La mquina virtual de Java revisa de manera peridica los bloques de memoria reservados buscando aquellos que no estn siendo referenciados por ninguna variable para liberarlos. La tarea que realiza esta operacin se llama recolector de basura (garbage colector) y se ejecuta en segundo plano intentando aprovechar los tiempos de baja intensidad de proceso. Declaracin de mtodos constructor y destructor. Para definir los constructores se emplea la siguiente sintaxis: [modifVisibilidad] nombreConstructor (listaParmetros) { Cuerpo del constructor } Donde: Para modifVisibilidad se aplica las mismas normas que para atributos y mtodos: public: indica que es un mtodo accesible a travs de una instancia del objeto. private: indica que a travs de una instancia no es accesible el mtodo. Al heredar no se puede usar desde la clase derivada.

Estrella Herrera Joseph Flix

12590392

protected: indica que a travs de una instancia no es accesible el mtodo. Al heredar si se puede usar desde la clase derivada. Sin especificar: indica visibilidad de paquete, se puede acceder a travs de una instancia, pero slo de clases que se encuentren en el mismo paquete. nombreConstructor debe de coincidir con el nombre de la clase. listaParmetros es la lista de los parmetros que tomar la funcin separados por comas y definidos cada uno de ellos como: tipo nombre_Parmetro El constructor posee un par de llaves, dentro de las cuales estar el cdigo que se ejecutar al ser llamada la funcin. Dicho cdigo estar formado por instrucciones vlidas en el lenguaje, finalizadas generalmente por punto y coma. Aplicaciones de constructores y destructores. // Uso del constructor predeterminado.(No se define otro constructor) using System; using C = System.Console; class Persona { private string nombre; private int edad; public void asignaNombre( string n) { nombre = n; } public void asignaEdad( int e) { edad = e; } public string daNombre( ) { return nombre; } public int daEdad( ) { return edad ;

Estrella Herrera Joseph Flix } } public class Principal { public static void Main( ) {

12590392

Persona p = new Persona( ) ; // Se invoca al constructor //predeterminado. p.asignaNombre("Luis"); p.asignaEdad(25); C.WriteLine("Nombre: {0} , Edad: {1}", p.daNombre(), p.daEdad()); } Sobrecarga de mtodos y sobre carga de operadores Los operadores de java son muy parecidos en estilo y funcionamiento a los de C. Tanto c, como c++, como java, proporcionan un conjunto de operadores para poder realizar acciones sobre uno o dos operando. Un operador que acta sobre un solo operando es un operador unario, y un operador que acta sobre dos operando es un operador binario. La sobrecarga de operadores permite redefinir ciertos operadores, como "+" y "-", para usarlos con las clases que hemos definido. Se llama sobrecarga de operadores porque estamos reutilizando el mismo operador con un nmero de usos diferentes, y el compilador decide cmo usar ese operador dependiendo sobre qu opera. La sobrecarga de operadores slo se puede utilizar con clases, no se pueden redefinir los operadores para los tipos simples predefinidos. Los operadores lgicos && y || pueden ser sobrecargados para las clases definidas por el programador, pero no funcionarn como operadores de short circuit. Todos los miembros de la construccin lgica sern evaluados sin ningn problema en lo que se refiere a la salida. Naturalmente los operadores lgicos predefinidos continuarn siendo operadores de short circuit como era de esperar, pero no los sobrecargados. Los siguientes operadores no pueden ser sobrecargados: El operador ternario? El operador de acceso a una clase o estructura : . El operador scope :: . Por qu java no soporta la sobre carga de operadores? Java no soporta sobrecarga de operadores, aunque el sistema internamente la utiliza, pero est ocultada al programador, por ejemplo si te fijas al hacer un Int ejemplo=2+1;

Estrella Herrera Joseph Flix

12590392

En java eso es vlido y le asigna un 3 a la variable ejemplo la funcionalidad fue sumar, sin embargo en este: String ejemplo="hola"+"mundo"; El operador + se utiliza con otra finalidad: Concatenar, Java si usa la sobrecarga de operadores, pero esta oculta para el programador, sea no te permite usarla. Porque? Bsicamente para no llevar a confusin , imagina que defines una clase llamada "sobrescribe" en la cual sobrecargaras el operador suma y le asignaras tu propia forma de trabajar por ejemplo sumar fracciones y ms tarde defines la clase "fracciones" heredando la clase "sobrescribe" el resultado sera que en la clase "fracciones" el operador suma cambiara su comportamiento. Si llegase ahora un programador externo y revisara la clase fracciones podra confundirse y creer que este operador mantiene el comportamiento normal, para saber que tiene el comportamiento actual tendra que ir a revisar "sobrescribe", ahora imagina que esta herencia se realiza entre varias clases, sera muy difcil saber si realmente se est cambiando el comportamiento del operador suma o no. Esta es una de las razones ms fuertes por las cuales Java no soporta la sobrecarga de operadores bsicamente para no llevar a confusin y al fin y al cabo no es necesaria, puedes utilizar tus propios mtodos.

PROGRAMACION ORIENTADA A OBJETOS CON JAVA Francisco Gutirrez, Francisco Duran, Ernesto Pimentel Java 2 Jos Rafael Garca-Bermejo Giner