TutorJava Nivel Básico

Ahora que ya sabemos como crear, utilizar y destruir objetos, es hora de aprender c�mo escribir clases de las que crear esos objetos.

Una clase es un proyecto o prototipo que se puede utilizar para crear muchos objetos. La implementaci�n de una clase comprende dos componentes: la declaraci�n y el cuerpo de la clase.

Declaraci�nDeLaClase {
    CuerpoDeLaClase
}

.�La Declaraci�n de la Clase

Como m�nimo, la declaraci�n de una clase debe contener la palabra clave class y el nombre de la clase que est� definiendo. As� la declaraci�n m�s sencilla de una clase se parecer�a 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 convenci�n, deben empezar por una letra may�scula. Muchas veces, todo lo que se necesitar� ser� una declaraci�n m�nima. Sin embargo, la declaraci�n de una clase puede decir m�s cosas sobre la clase. M�s especificamente, dentro de la declaraci�n 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 p�blica, abstracta o final

.�Declarar la Superclase de la Clase

En Java, todas las clases tienen una superclase. Si no se especifica una superclase para una clase, se asume que es la clase Object (declarada en java.lang). Entonces la superclase de NumeroImaginario es Object porque la declaraci�n no explicit� ninguna otra clase. Para obtener m�s informaci�n sobre la clase Object, puede ver La clase Object.

Para especificar expl�citamente la superclase de una clase, se debe poner la palabra clave extends m�s el nombre de la superclase entre el nombre de la clase que se ha creado y la llave abierta que abre el cuerpo de la clase, as�.

class NombredeClase extends NombredeSuperClase {
    . . .
}

Por ejemplo, supon que quieres que la superclase de NumeroImaginario sea la clase Number en vez de la clase Object. Se podr�a escribir esto.

class NumeroImaginario extends Number {
    . . .
}

Esto declara expl�citamente que la clase Number es la superclase de NumeroImaginario. (La clase Number es parte del paquete java.lang y es la base para los enteros, los n�meros en coma flotante y otros n�meros).

Declarar que Number es la superclase de NumeroImaginario declara impl�citamente que NumeroImaginario es una subclase de Number. Una subclase hereda las variables y los m�todos de su superclase.

Crear una subclase puede ser tan sencillo como incluir la clausula extends en su declaraci�n de clase. Sin embargo, se tendr�n que hacer otras provisiones en su c�digo cuando se crea una subclase, como sobreescribir m�todos. Para obtener m�s informaci�n sobre la creaci�n de subclases, puede ver Subclases, Superclases, y Herencia.

.�Listar los Interfaces Implementados por la Clase

Cuando se declara una clase, se puede especificar que interface, si lo hay, est� implementado por la clase. Pero, �Qu� es un interface? Un interface declara un conjunto de m�todos y constantes sin especificar su implementaci�n para ning�n m�todo. Cuando una clase exige la implementaci�n de un interface, debe proporcionar la implementaci�n para todos los m�todos declarados en el interface.

Para declarar que una clase implementa uno o m�s interfaces, se debe utilizar la palabra clave implements seguida por una lista de los interfaces implementados por la clase delimitados por comas. Por ejemplo, imagina un interface llamado Aritmetico que define los m�todos llamados suma(), resta(), etc... La clase NumeroImaginario puede declarar que implementa el interface Aritmetico de esta forma.

class NumeroImaginario extends Number implements Aritmetico {
    . . .
}

se debe garantizar que propociona la implementaci�n para los m�todos suma(), resta() y dem�s m�todos declarados en el interface Aritmetico. Si en NumeroImaginario falta alguna implementaci�n de los m�todos definidos en Aritmetico, el compilador mostrar� un mensaje de error y no compilar� el programa.

nothing.java:5: class NumeroImaginario must be declared abstract. It does not define
java.lang.Number add(java.lang.Number, java.lang.Number) from interface Aritmetico.
class NumeroImaginario extends Number implements Aritmetico {
      ^

Por convenci�n, la clausula implements sigue a la clausula extends si �sta existe.

Observa que las firmas de los m�todos declarados en el interface Aritmetico deben corresponder con las firmas de los m�todos implementados en la clase NumeroImaginario. Tienes m�s informaci�n sobre c�mo crear y utilizar interfaces en Crear y Utilizar Interfaces.

.�Clases Public, Abstract, y Final

Se puede utilizar uno de estos tres modificadores en una declaraci�n de clase para declarar que esa clase es p�blica, 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 est�n fuera del paquete actual. Por defecto, una clase s�lo puede ser utilizada por otras clases del mismo paquete en el que est�n declaradas.

public class NumeroImaginario extends Number implements Aritmetico {
    . . .
}

Por convenci�n, cuando se utiliza la palabra public en una declaraci�n de clase debemos asegurarnos de que es el primer item de la declaraci�n.

El modificador abstract declara que la clase es una clase abstracta. Una clase abstracta podr�a contener m�todos abstractos (m�todos sin implementaci�n). Una clase abstracta est� dise�ada para ser una superclase y no puede ejemplarizarse. Para una discusi�n sobre las clases abstractas y c�mo escribirlas puedes ver Escribir Clases y M�todos Abstractos.

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 podr�a querer hacer esto: razones de seguridad y razones de dise�o. Para una mejor explicaci�n sobre las clases finales puedes ver Escribir Clases y M�todos Finales.

Observa que no tiene sentido para una clase ser abstracta y final. En otras palabras, una clase que contenga m�todos no implementados no puede ser final. Intentar declarar una clase como final y abstracta resultar� en un error en tiempo de compilaci�n.

.�Sumario de la Daclaraci�n de una Clase

En suma, una declaraci�n de clase se parecer�a a esto.

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

Los puntos entre [ y ] son opcionales. Una declaraci�n de clase define los siguientes aspectos de una clase.

  • modificadores declaran si la clase es abstracta, p�blica 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, s�lo la palabra clave class y el nombre de la clase son necesarios. Los otros son opcionales. Si no se realiza ninguna declaraci�n expl�cita para los items opcionales, el compilador Java asume ciertos valores por defecto (una subclase de Object no final, no p�blica, no obstracta y que no implementa interfaces).

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP