Vous êtes sur la page 1sur 27

Clases, Objetos y Mtodos

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"); } }

Clases Public, Abstract, y Final


Se puede utilizar uno de estos tres modificadores en una declaracin de clase para declarar que esa clase es pblica, abstracta o final. Los modificadores van delante de la palabra clave class y son opcionales.

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.

Sumario de la Declaracin de una Clase


En suma, una declaracin de clase se parecera a esto:

[ modificadores ] class NombredeClase [ extends NombredeSuperclase ] [ implements NombredeInterface ] { ... }


Los puntos entre [ y ] son opcionales. Una declaracin de clase define los siguientes aspectos de una clase: modificadores declaran si la clase es abstracta, pblica o final. NombredeClase selecciona el nombre de la clase que est declarando NombredeSuperClase es el nombre de la superclase de NombredeClase NombredeInterface es una lista delimitada por comas de los interfaces implementados por NombredeClase De todos estos items, slo la palabra clave class y el nombre de la clase son necesarios. Los otros son opcionales. Si no se realiza ninguna declaracin explcita para los items opcionales, el compilador Java asume ciertos valores por defecto (una subclase de Object no final, no pblica, no obstracta y que no implementa interfaces).

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.

DeclaracindeClase { DeclaracionesdeVariablesMiembros DeclaracionesdeMtodos }

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.

Declarar Variables Miembro


Como mnimo, una declaracin de variable miembro tiene dos componentes: el tipo de dato y el nombre de la variable.

tipo nombreVariable; // Declaracin mnima de una variable miembro


Una declaracin mnima de variable miembro es como la declaracin de variables que se escribe en cualquier otro lugar de un programa Java, como las variables locales o parmetros de mtodos. El siguiente cdigo declara una variable miembro entera llamada unEntero dentro de la clase ClaseEnteros.

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.

Una declaracin de variable se podra parecer a esto:


[especificadordeAcceso] [static] [final] [transient] [volatile] tipo nombredeVaraible Los puntos entre [ y ] son opcionales. Lo items en negrita se deben reemplazar por palabras clave o por nombres. Una declaracin de variable miembro define los siguientes aspectos de la variable:

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.

Modificadores de acceso: public, private, protected y default


Los modificadores de acceso, como su nombre indica, determinan desde qu clases se puede acceder a un determinado elemento. En Java tenemos 4 tipos: public, private, protected y el tipo por defecto, que no tiene ninguna palabra clave asociada, pero se suele conocer como default o package-private. Si no especificamos ningn modificador de acceso se utiliza el nivel de acceso por defecto, que consiste en que el elemento puede ser accedido slo desde las clases que pertenezcan al mismo paquete. El nivel de acceso public permite a acceder al elemento desde cualquier clase, independientemente de que esta pertenezca o no al paquete en que se encuentra el elemento.

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:

class Avo { final double AVOGADRO = 6.023e23; }


Por convencin, los nombres de los valores constantes se escriben completamene en maysculas. Si un programa intenta cambiar una variable, el compilador muestra un mensaje de error similar al siguiente, y rehsa a compilar su programa. AvogadroTest.java:5: Can't assign a value to a final variable: AVOGADRO

Declarar Variables Transitorias


Por defecto, las variables miembro son una parte persistente del estado de un objeto, Las variables que forman parte persistente del estado del objeto debe guardarse cuando el objeto se archiva. Se puede utilizar la palabra clave transient para indicar a la mquina virtual Java que la variable indicada no es una parte persistente del objeto. Al igual que otros modificadores de variables en el sistema Java, se puede utilizar transient en una clase o declaracin de variable de ejemplar como esta:

class TransientExample { transient int lobo; ... }


Este ejemplo declara una variable entera llamada lobo que no es una parte persistente del estado de la claseTransientExample.

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)); } }

Declaracin y creacin de objetos


Antes de utilizar un objeto, es necesario declararlo. Se pueden declarar objetos de la misma forma que se declaran variables de tipo de datos sencillos, pero se puede usar la clase como tipo de objeto. Adems, se puede usar el operador new para crear objetos en Java. Veamos un ejemplo que utiliza la clase String. class app{ public static void main(String args[]){ String s1; s1 = new String("Hola desde java"); System.out.println(s1); } } Ahora, el nuevo objeto, s 1, existe y ya se puede utilizar. Por ejemplo, para convertir todos los caracteres de s l a minscula, se puede usar el mtodo toLowerCase de la clase String:

class app{ public static void main(String args[]){ String s1; s1 = new String("Hola desde java"); System.out.println(s1.toLowerCase()); } }

Vous aimerez peut-être aussi