Académique Documents
Professionnel Documents
Culture Documents
Declarar Clases
Una clase es un proyecto o prototipo que se puede utilizar para crear muchos objetos. La implementacin de una clase comprende dos componentes: la declaracin y el cuerpo de la clase:
DeclaracinDeLaClase { CuerpoDeLaClase }
La Declaracin de la Clase
Como mnimo, la declaracin de una clase debe contener la palabra clave class y el nombre de la clase que est definiendo. As la declaracin ms sencilla de una clase se parecera a esto: class NombredeClase { ... }
Por ejemplo, esta clase declara una nueva clase llamada NumeroImaginario:
class NumeroImaginario { ... } Los nombres de las clases deben ser un identificador legal de Java y, por convencin, deben empezar por una letra mayscula. Muchas veces, todo lo que se necesitar ser una declaracin mnima. Sin embargo, la declaracin de una clase puede decir ms cosas sobre la clase. Ms especficamente, dentro de la declaracin de la clase se puede: Declarar cual es la superclase de la clase. Listar los interfaces implementados por la clase Declarar si la clase es pblica, abstracta o final
Ejemplo:
class app{ public static void main(String args[]){ System.out.println("hola mundo java"); } }
El modificador public declara que la clase puede ser utilizada por objetos que estn fuera del paquete actual. Por defecto, una clase slo puede ser utiliza por otras clases del mismo paquete en el que estn declaradas.
public class NumeroImaginario extends Number implements Aritmetico { ... } Por convencin, cuando se utiliza la palabra public en una declaracin de clase debemos asegurarnos de que es el primer item de la declaracin.
El modificador abstract declara que la clase es una clase abstracta. Una clase abstracta podra contener mtodos abstractos (mtodos sin implementacin). Una clase abstracta est diseada para ser una superclase y no puede ejemplarizarse. Utilizando el modificador final se puede declarar que una clase es final, que no puede tener subclases. Existen (al menos) dos razones por las que se podra querer hacer esto: razones de seguridad y razones de diseo. Observa que no tiene sentido para una clase ser abstracta y final. En otras palabras, una clase que contenga mtodos no implementados no puede ser final. Intentar declarar una clase como final y abstracta resultar en un error en tiempo de compilacin.
El Cuerpo de la Clase
Anteriormente se vi una implementacin de una clase: DeclaraciondeClase { CuerpodeClase } El cuerpo de la clase compone la implementacin de la propia clase y contiene dos secciones diferentes: la declaracin de variables y la de mtodos. Una variable miembro de la clase representa un estado de la clase y sus mtodos implementa el comportamiento de la clase. Dentro del cuerpo de la clase se definen todas las variables miembro y los mtodos soportados por la clase. descripcin general de la
Tpicamente, primero se declaran las variables miembro de la clase y luego se proporcionan las declaraciones e implementaciones de los mtodos, aunque este orden no es necesario.
Ejemplo
class Ticket { Float precio; String destino; Date fechaSalida; void firma(Float forPrecio, String forDestino, Date forFecha) { precio = forPrecio; destino = forDestino; fechaSalida = forFecha; } }
Adems de las variables miembro y los mtodos que se declaran explcitamente dentro del cuerpo de la clase, una clase puede heredar algo de su superclase. Por ejemplo, todas las clases del entorno Java son una descendencia (directa o indirecta) de la clase Object. La clase Object define el estado bsico y el comportamieto que todos los objetos deben tener como habilidad para comparar unos objetos con otros, para convertir una cadena, para esperar una condicin variable, para notificar a otros objetos que una condicin variable ha cambiado, etc... As, como descendentes de esta clase, todos los objetos del entorno Java heredan sus comportamientos de la clase Object.
class ClaseEnteros { int unEntero; ... // define los mtodos aqu ... }
Un nombre de una variable miembro puede ser cualquier identificador legal de Java y por convencin empieza con una letra minscula (los nombres de clase tpicamente empiezan con una letra mayscula). No se puede declarar ms de una variable con el mismo nombre en la misma clase. Por ejemplo, el siguiente cdigo es legal: class ClaseEnteros { int unEntero; int unEntero() { // un mtodo con el mismo nombre que una variable ... } } Junto con el nombre y el tipo, se pueden especificar varios atributos para las variables miembro cuando se las declara: incluyendo si los objetos pueden acceder a la variable, si la variable es una variable de clase, y si la variable es una constante.
especificadordeAcceso Define si otras clases tienen acceso a la variable. Se puede controlar el acceso a los mtodos utilizando los mismos especificadores, por eso Controlar el Acceso a Variables Miembro de una Clase cubre cmo se puede controlar el acceso a las variables miembro o los mtodos.
private, por otro lado, es el modificador ms restrictivo y especifica que los elementos que lo utilizan slo pueden ser accedidos desde la clase en la que se encuentran. Este modificador slo puede utilizarse sobre los miembros de una clase y sobre interfaces y clases internas, no sobre clases o interfaces de primer nivel, dado que esto no tendra sentido. Es importante destacar tambin que private convierte los elementos en privados para otras clases, no para otras instancias de la clase. Es decir, un objeto de una determinada clase puede acceder a los miembros privados de otro objeto de la misma clase, por lo que algo como lo siguiente sera perfectamente vlido:
El modificador protected, por ltimo, indica que los elementos slo pueden ser accedidos desde su mismo paquete (como el acceso por defecto) y desde cualquier clase que extienda la clase en que se encuentra, independientemente de si esta se encuentra en el mismo paquete o no. Este modificador, como private, no tiene sentido a nivel de clases o interfaces no internas.
Los distintos modificadores de acceso quedan resumidos en la siguiente tabla:
static
A pesar de lo que podra parecer por su nombre, heredado de la terminologa de C++, el modificador static no sirve para crear constantes, sino para crear miembros que pertenecen a la clase, y no a una instancia de la clase. Esto implica, entre otras cosas, que no es necesario crear un objeto de la clase para poder acceder a estos atributos y mtodos. Este es el motivo por el cual es obligatorio que main se declare como static; de esta forma no tenemos que ofrecer un constructor vaco para la clase que contiene el mtodo, o indicar de alguna forma a la mquina virtual cmo instanciar la clase.
Otro uso sera el de crear una recopilacin de mtodos y atributos relacionados a los que poder acceder sin necesidad de crear un objeto asociado, que podra no tener sentido o no ser conveniente, como es el caso de la clase Math.
final indica que la variable es una constante transient la variable no es una parte persistente del estado del objeto volatile significa que la variable es modificada de forma asncrona. La explicacin de las variables final, transient, y volatile viene ahora:
Declarar Constantes
Para crear una variable miembro constante en Java se debe utilizar la palabra clave final en su declaracin de variable. La siguiente declaracin define una constante llamada AVOGADRO cuyo valor es el nmero de Avogadro (6.023 x 10^23) y no puede ser cambiado:
Mtodos
Los mtodos son funciones de una clase. Generalmente los mtodos se dividen en aquellos que se usan internamente en la clase, llamados mtodos privados (private), los que se usan fuera de la clase, llamados mtodos pblicos (public) y los que son usados por la clase y sus derivadas, llamados mtodos protegidos (protected). En el ejemplo siguiente, se usa el mtodo calculate para trabajar con los dos valores de operandl y operand2 y almacenar el resultado del clculo en result: Calculator calcl = new Calculator( ) ; result = calcl.calculate(operandl, operand2); Java soporta dos tipos de mtodos: mtodos de clase y mtodos de instancia.
Los mtodos de instancia, como en el ejemplo calculate, son invocados en objetos (es decir, los objetos son instancias de una clase). Los mtodos de clase, por otro lado, son invocados en una clase. Por ejemplo, la clase java.lang.Math tiene un mtodo de clase llamado sqrt que calcula una raz cuadrada, y se puede usar como sigue (no es necesario un objeto): class app{ public static void main(String args[]){ Double x = 5.2; System.out.println("la raiz cuadra es:"+Math.sqrt(x)); } }
class app{ public static void main(String args[]){ String s1; s1 = new String("Hola desde java"); System.out.println(s1.toLowerCase()); } }