1
2
3
4
5
6
7
8
9
10
11
Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan sobre esos datos. public class Classname { ... // definición de variables y métodos }
Un objeto (instance) es un ejemplar concreto de una clase. Las características de una clase son las siguientes: 1) odas las variables y !unciones de "ava deben pertenecer a una clase. #i una clase deriva de otra ( extends)$ %ereda todas sus variables y métodos. "ava tiene una jerarquía de clases est&ndar de la que pueden derivar las clases que crean los usuarios. 'n "ava no %ay %erencia mltiple. 'n un !ic%ero se pueden de!inir varias clases$ pero en un !ic%ero no puede %aber m&s que una clase public . #i una clase contenida en un !ic%ero no es public $ no es necesario que el !ic%ero se llame como la clase. ) Los métodos de una clase pueden re!erirse de modo global al objeto de esa clase al que se aplican por medio de la re!erencia this. Las clases se pueden agrupar en packages$ introduciendo una línea al comien*o del !ic%ero ( package pac+age,ame-).
ariables miembro de objeto ariables miembro de clase (static). #on aquellas variables propias de la clase. #e crean anteponiendo la palabra static a su declaración$ y se suelen utili*ar para de!inir constantes comunes para todos los objetos de la clase. Las variables de clase son lo m&s parecido que "ava tiene a las variables globales de /0/.
ariables que no pueden cambiar su valor a lo largo de la ejecución del programa. 2uede ser considerada como una constante$ y equivale a la palabra const de /0/. "ava permite separar la de!inición de la iniciali*ación de una variable final - es decir$ la iniciali*ación puede %acerse m&s tarde$ en tiempo de ejecución$ llamando a métodos o en !unción de otros datos.
Los métodos son !unciones de!inidas dentro de una clase. 12
La primera línea de la de!inición de un método se llama declaración o %eader- el código comprendido entre las llaves 3 ... 4 es el cuerpo o body del método. public returnValue functionName(arg1arg!..." { // comien#o del método ... // cuerpo de la función } // final del método 'l %eader consta del cuali!icador de acceso ( public $ en este caso)$ del tipo del valor de
retorno$ del nombre de la !unción y de una lista de argumentos e5plícitos entre paréntesis$ separados por comas.
MÉTODOS DE OBJETO #' 62L7/6, #7'829' 6 U, ;"' <' L6 /L6#' 29 8'<7 <'L 2'96<9 2U, (.). <7/= ;"' '# #U 69>U8', 782L?/7.
Métodos de clase (static). 8étodos que no actan sobre objetos concretos a través del operador punto. Los métodos de clase pueden recibir objetos de su clase como argumentos e5plícitos$ pero no tienen argumento implícito ni pueden utili*ar la re!erencia this.
Métodos sobrecargados (overloaded). 8étodos que tienen el mismo nombre$ pero que se di!erencian por el nmero y0o tipo de los argumentos.
Un constructor es un método que se llama autom&ticamente cada ve* que se crea un objeto de una clase. La principal misión del constructor es reservar memoria e iniciali*ar las variables miembro de la clase. Los constructores no tienen valor de retorno (ni siquiera void ) y su nombre es el mismo que el de la clase. #u argumento implícito es el objeto que se est& creando. Una clase tiene varios constructores$ que se di!erencian por el tipo y nmero de sus argumentos (métodos sobrecargados). #e llama constructor por de!ecto al constructor que no tiene argumentos.
Línea de actuación para evitar que %aya variables sin iniciali*ar correctamente$ y estos pueden ser static (para la clase) o de objeto.
Inicializadores de clase (static). 's un algo parecido a un método que se llama autom&ticamente al crear la clase. #e di!erencia del constructor en que no es llamado para cada objeto$ sino una sola ve* para toda la clase.
13
Los tipos primitivos pueden iniciali*arse directamente con asignaciones en la clase o en el constructor$ pero para iniciali*ar objetos o elementos m&s complicados es bueno utili*ar un iniciali*ador$ ya que permite gestionar e5cepciones (situaciones de error) con try ... catch. Los iniciali*adores static se crean dentro de la clase$ como métodos sin nombre$ sin argumentos y sin valor de retorno- tan solo es la palabra static y el código entre llaves 3 ... 4.
Inicializadores de objeto. ,o llevan la palabra static y se utili*an para las clases anónimas$ que por no tener nombre no pueden tener constructor. 'n este caso$ los iniciali*adores de objeto se llaman cada ve* que se crea un objeto de la clase anónima.
'n "ava no %ay destructores como en /. 'l sistema se ocupa autom&ticamente de liberar memoria de los objetos que ya %an perdido la re!erencia$ esto es$ objetos que ya no tienen ningn nombre que permita acceder a ellos$ por ejemplo por %aber llegado al !inal del bloque en el que %abían sido de!inidos$ porque a la re!erencia se le %a asignado el valor null o porque a la re!erencia se le %a asignado la dirección de otro objeto. 6 esta característica se le llama recogida de basura (garbage collection).
#on métodos que vienen a complementar la labor del garbage collector. Un !inali*ador es un método de objeto (no static )$ sin valor de retorno (void )$ sin argumentos$ con nombre de !unciónfinalize()$ y que se llama autom&ticamente cuando se va a destruir un objeto (antes de que la memoria sea liberada de modo autom&tico por el sistema). #e utili*an para ciertas operaciones de terminación distintas de liberar memoria (por ejemplo: cerrar !ic%eros$ cerrar cone5iones de red$ etc.)
Un package es una agrupación de clases. 2ara que una clase pase a !ormar parte de un package llamado p+g,ame$ %ay que introducir en ella la sentencia: pac+age p+g,ameque debe ser la primera sentencia del !ic%ero sin contar comentarios y líneas en blanco. Los nombres de los packages se suelen escribir con minsculas para distinguirlos de las clases. odas las clases que !orman parte de un package deben estar en el mismo directorio. Los nombres compuestos de los pac+ages est&n relacionados con la jerarquía de directorios en que se guardan las clases. 2ac+age permite que los nombres de las clases de "ava sean nicos en 7nternet y así evitar con!lictos. Las clases de un pac+age se almacenan en un directorio con el mismo nombre largo (pat%) que el pac+age. 2or ejemplo$ la clase
[email protected]+#ort.class debería estar en el directorio /L6##26=BesBceirBjgjalonBin!or@BordenarBAuic+#ort.class$ donde /L6##26= es una variable de entorno del 2/ que establece la posición absoluta de los directorios en los que %ay clases de "ava (clases del sistema o de usuario)$ en este caso la posición del directorio es en los discos locales del ordenador. Los pac+ages se utili*an con las !inalidades siguientes: 2ara agrupar clases relacionadas. 2@) 2ara evitar con!lictos de nombres ya que el dominio de nombres de "ava es la 7nternet. 2C) 2ara ayudar en el control de la accesibilidad de clases y miembros. 14
/onstruir una clase a partir de otra. 2ara indicar que una clase deriva de otra se utili*a la palabra extends$ como por ejemplo: class /irculo>ra!ico e5tends /irculo 3 ... 4 /uando una clase deriva de otra$ %ereda todas sus variables y métodos. 'stas !unciones y variables miembro pueden ser rede!inidas (overridden) en la clase derivada$ que puede también de!inir o aDadir nuevas variables y métodos.
a clase Object 's la raí* de toda la jerarquía de clases de "ava. /omo consecuencia$ todas las clases tienen algunos métodos que %an %eredado de bject.
Una clase abstracta (abstract ) es una clase de la que no se pueden crear objetos. #u utilidad es permitir que otras clases deriven de ella$ proporcion&ndoles un marco o modelo que deben seguir y algunos métodos de utilidad general. Las clases abstractas se declaran anteponiéndoles la palabra abstract $ como por ejemplo public abstract class >eometria 3 ... 4 Una clase abstract puede tener métodos que no son abstract $ pero si una clase tiene algn método abstract es obligatorio que la clase sea abstract .
Una clase declarada final no puede tener clases derivadas. 'sto se puede %acer por motivos de seguridad y también por motivos de e!iciencia$ porque cuando el compilador sabe que los métodos no van a ser rede!inidos puede %acer optimi*aciones adicionales. 6n&logamente$ un método declarado como final no puede ser rede!inido por una clase que derive de su propia clase.
Una inter!ace es un conjunto de declaraciones de métodos (sin de!inición).
http://facilenjava.blogspot.com/p/docmentos.html
15