Las clases son el mecanismo básico que
proporciona Java para manejar el
concepto de abstracción y de tipado.
• Identificación.La primera línea de una clase identifica el nombre de la clase, las
clases de las que hereda, las interfaces que implementa, las excepciones que puede
lanzar y los parámetros utilizados para referir tipos.
• Miembros.Se pueden clasificar en datos miembros y funciones miembros,
también conocidos como propiedades y métodos
• Clases internas.Clases que se definen dentro de otras clases. Normalmente se
utilizan para crear clases fuertemente ligadas con la clase huésped.
• Bloques de inicialización .Conjuntos de instrucciones encargadas de iniciar las
propiedades de la clase. Java se encarga de que estos bloques se ejecuten
convenientemente antes de crear los objetos de la clase.
Las propiedades en detalle
Las propiedades, o campos, sirven para dotar de estado al objeto o a la propia clase. Las
propiedades son variables que se definen dentro de una clase y que pueden tomar valores
diferentes en cada objeto.
Acceso a las propiedades de objeto
Para acceder a las propiedades de objeto se utiliza
el identificador del objeto seguido del identificador
de la propiedad separados por un punto.
Acceso a las propiedades de clase
(propiedades estáticas)
Para acceder a las propiedades de clase se utiliza el
nombre de la clase seguido del nombre de la propiedad
separados por un punto.
La referencia this
La propiedad this es una referencia no modificable al propio
objeto en el que se invoca y, por lo tanto, se puede utilizar en
todos los métodos no estáticos de un objeto.
Modificadores en la
definición de clases g
enerales
Los métodos en detalle
Los métodos (también llamados mensajes) son funciones definidas dentro la clase
y que se invocan sobre los objetos creados de esa clase o sobre la clase misma.
Acceso a los métodos de un objeto
Para acceder a un método de un objeto se utiliza el
identificador del objeto seguido del identificador del método.
Acceso a los métodos de una clase (métodos estáticos)
Para acceder a los métodos estáticos de una clase se utiliza el nombre de la
clase seguido del nombre del método separados por el carácter punto, siendo
innecesario referir la clase si se invoca en el ámbito de la propia clase.
Devolución de valores
Los métodos en Java pueden devolver valores de tipos primitivos o
referencias a objetos. Para ello se utiliza una sentencia que consiste en la
palabra reservada return seguida opcionalmente de una expresión.
Paso de parámetros
El paso de parámetros a un método en Java siempre es por valor. Tanto los tipos primitivos como las
referencias a los objetos se pasan por valor. Así, un cambio de uno de estos parámetros dentro de un
método no afecta a su valor en el exterior.
Sobrecarg a de métodos (polimorfismo estático)
A esta propiedad, que permite usar un mismo nombre y que en cada caso tenga diversas interpretaciones, se le
denomina polimorfismo estático o sobrecarg a , y se resuelve de manera estática en la compilación.
Creación de objetos
Se ha explicado que para crear un objeto en Java se
usa la palabra reservada new seguida del nombre de
la clase y unos paréntesis. En esta operación se está
invocando al constr uctor de la clase. Los
constructores son métodos especiales que se
ejecutan cuando se crea un objeto y que se utilizan
para iniciar las propiedades del objeto.
Destr ucción de objetos
Para ello la máquina virtual de Java revisa de manera periódica los bloques de memoria reservados
buscando aquellos que no están siendo referenciados por ninguna variable para liberarlos. La tarea
que realiza esta operación se llama recolector de basura (garbage collector ) y se ejecuta en segundo
plano intentando aprovechar los tiempos de baja intensidad de proceso.
Finalizadores
Los finalizadores son métodos que se ejecutan antes de la liberación del
espacio de memoria de un objeto. En ellos se pueden realizar tareas como
avisar a otros objetos relacionados de la destrucción de éste. Para añadir
un finalizador a una clase basta con añadir un método que se llame finalize
y cuyo tipo devuelto sea void .
Bloques de inicialización
Java permite definir bloques de inicialización. Estos bloques se
definen mediante ámbitos anónimos en el interior de las clases, y se
ejecutan de manera previa a cualquier constructor siguiendo el
orden en el que estén presentes.
Los modificadores detalle de control de
acceso a los miembros en detalle
public .Si la clase A tiene un miembro declarado como
public ese miembro es accesible desde cualquier clase
que vea la interfaz de A .
private .Si la clase A tiene un miembro declarado como
private ese miembro sólo es accesible desde los
métodos de la clase A .
protected .Si la clase A tiene un miembro declarado como
protected ese miembro es accesible desde los métodos de
la clase A , por las clases que hereden de A , y por las
clases definidas en el mismo paquete.
Si no se especifica ningún modificador de control de acceso
el miembro declarado es de tipo friendly . Estos miembros
son visibles desde cualquier clase que pertenezca al mismo
paquete, siendo inaccesibles desde fuera del paquete.
Los modificadores de uso de los
miembros en detalle
abstract .Este modificador sólo es aplicable a
métodos. Cuando un método se declara
abstract en una clase A ese método no tiene
implementación en A .
abstract .Este modificador sólo es aplicable a
métodos. Cuando un método se declara
abstract en una clase A ese método no tiene
implementación en A .
final .Un miembro se declara como final cuando se desea impedir que su valor pueda ser cambiado.
En general se recomienda usar este modificador para todas las propiedades y métodos de las clases
que se definan.
native .Permite utilizar funciones externas a Java. Así, los miembros declarados native se
implementan en otro lenguaje nativo de la máquina en la que se invoca y se asocian a Java utilizando
bibliotecas de enlace dinámico mediante la Java Native Interface (JNI).
synchronized .Este modificador es aplicable a métodos o ámbitos. Provoca que el código así
etiquetado sólo pueda estar siendo ejecutado por un hilo en cada momento para cada objeto.
transient .El valor de una propiedad
definida como transient no se desea
que se preserve si el objeto tiene la
capacidad de persistencia.
volatile .Una propiedad así definida indica al
compilador que su uso no debe ser optimizado.
Esto se hace para evitar problemas cuando la
variable pueda ser utilizada desde varios
threads de manera simultánea.