Está en la página 1de 4

Una parte muy importante de la programación orientada a objetos son las clases, si no fuera por ellas ni siquiera

habría objetos. Al momento de crear una clase, java nos da la oportunidad de elegir entre distintos tipos de clase
que queramos para la nuestra. Cada una con sus propias características y ventajas. Un programador que conoce
estas características sabe cuándo debe usar una y no otra, de manera que desarrolle un buen software. Los tipos de
clases son:

C. Public: Son muy comunes, accesibles desde cualquier otra clase en la misma librería (de otro modo hay que
importarlas).

C. Abstract: Aquellas que tienen por lo menos un método abstracto. No implementan sus métodos, sino que dan las
bases para que sean implementados en la herencia.

C. Final: Son las que terminan la cadena de herencia. Útiles por motivos de seguridad y eficiencia de un programa,
ya que no permiten crear más sub-divisiones por debajo de esta clase.

C. Synchronizable : Especifica que sus métodos son sincronizados, evitando problemas con los thread, de forma
que estos no pueden empezar a correr un método si no ha acabado el otro.
 
Tipos de Clase
El conocimiento de las clases en Java es fundamental, ya que todo gira entorno a ellas. Un buen conocimiento de
ellas nos permitirá realizar programas que cumplan con lo que deseamos. Crear una clase es sencillo, se hace lo
siguiente:

[modificador] class [nombre]



//atributos y métodos
}

El modificador es el tipo de clase que se está creando. De acuerdo a este modificador, nuestra clase puede tener
diferentes características. Según cómo necesitamos que funcione nuestra clase podemos elegir entre un tipo u otro.
En java existen 4 tipos de clases:

-Public
-Abstract
-Final
-Synchronizable

Clases Public
Un tipo muy común de clases es el tipo público o “public”. Tiene la característica de ser accesible desde cualquier
otra clase, lo que nos permite trabajar con ella fácilmente. Sin embargo, para acceder a ella se debe tener acceso al
“package” al que pertenece.
 Se puede acceder a ellas directamente o por herencia, estando en el mismo paquete, para acceder desde otros
paquetes, primero hay que importarlos con la sentencia “import”. Esto es útil ya que por defecto las clases
solamente son accesibles por otras clases declaradas dentro del mismo paquete en el que se han declarado.
Un detalle de las clases del tipo “public” es que el archivo con el que se guardan debe tener el mismo nombre de la
clase, de otra forma se presentará un error de compilación. Uno puede llamar a una clase public desde otra, si se
encuentran en la misma carpeta, de otra forma tendrá dificultades para interactuar con esta.

Un ejemplo de uso de una clase public sería:

public class Banco{


 // cuerpo de la clase
}
Y al momento de grabar el programa, tendríamos que ponerle al archivo el nombre de “Banco.java”. Uno podría
encontrar muy útil el uso de las clases “public” cuando necesita usar constantemente elementos de esa clase en el
desarrollo de su programa en general. Evita problemas cuando se encuentran en paquetes diferentes, ya que se
aplica una reutilización de ese código.

Clases Abstract
Este tipo de clases son muy útiles para la programación orientada a objetos, ya que al declarar estas clases solo se
definen como se utiliza, sin la necesidad de implementar métodos, es decir se dejan incompletos para después ser
refinados mediante el mecanismo de la herencia, se puede fijar un conjunto de métodos y atributos, que serán
especializados más adelante. Las clases abstractas trabajan junto con los métodos abstractos, los cuales están
vacíos. Esto es muy útil cuando la implementación es específica pero cada usuario, cada uno puede implementarlos
como le parezca, pero sus métodos deben tener los mismos nombres que se dieron antes.

 Por ejemplo, al ver una declaración de métodos en una clase abstracta solo podemos observar algunas líneas que
solamente tienen los datos que van a recibir los métodos, pero el código que ejecutara el método no está, eso quiere
decir que podría estar en otro sitio. Se puede decir que es una base para la herencia, algo así como indicando qué es
lo que se tendrá que hacer más adelante. Una clase abstracta tiene que derivarse obligatoriamente. Pueden ser a la
vez clases “public”.

Aquí un ejemplo de una clase:

public abstract class Triangulo

public abstract void Area_Triangulo(int b, int h);

public abstract void Perímetro( int x, int y, int z);. . .

Nótese que los métodos sólo contienen los parámetros que reciben, mas no tienen implementadas las acciones que
deberían realizar. Cuando una clase contiene un método abstracto tiene que declararse abstracta. Pero esto no
quiere decir que todos los métodos de una clase abstracta tienen que ser abstractos. Las clases abstractas no pueden
tener métodos privados ya que no se podrían implementar, ni tampoco estáticos.

Clases Final
Una clase final es la que acaba con una cadena de herencia.  De la clase final no se puede heredar nada. Al decir
que termina la cadena de herencia significa que ya no se sub-divide en más clases, pues indica que es el final de las
divisiones. Las organizaciones de clases en java suelen ser de la siguiente forma:

class A{ }
class B extends A { }

Con lo que se indica que de la clase A sale una sub-clase o clase hija que es B. Esta es la idea estándar de la
programación orientada a objetos en java. Pero se puede modificar este tipo de organizaciones al usar “final”. Sería
de la siguiente forma:

final class A { }
Con lo que se está indicando que de la clase A no van a salir otras clases. Según esto no podría existir la clase “B”.
Es lo contrario a declarar una clase abstracta. Es posible mezclar final con public, es decir, se puede tener algo
como esto:

public final class A{ }

Uno puede declarar su clase como “final” por algunos motivos. Primero está el motivo de seguridad. Cuando no se
quiere que otra persona haga sub-clases en base a la clase que has creado y haga nuevas instancias de ésta. Te da
un control sobre la clase evitando que le introduzcan funcionamientos anormales. Por ejemplo, la clase
java.lang.String está declarada como “final”, por lo tanto no permite crear una sub-clase String y darle un método
length() que yo haya creado y que haga algo diferente a devolverme la longitud de una cadena. El otro motivo para
usar “final” es la eficiencia. Se trabaja solo con instancias de la clase sin tener que ir a las sub-clases, así puedes
optimizar esa clase. Si la clase es “final”, entonces implícitamente todos sus métodos son “final” también y no hay
sobrecarga de métodos. Además los programas pueden correr hasta dos veces más rápido si la clase es “final” Las
librerías de java usan mucho el “final”, como las clases Math, InetAddressand Socket. Es una forma de seguridad
de java para que no las alteremos.
 

Clases Synchronizable
Al poner “Synchronizable” se especifica que todos los métodos que estén definidos dentro de esta clase serán
sincronizados. Para esto debemos saber que la computadora puede llevar a cabo varios threads a la vez; un thread
es un flujo de control para controlar la ejecución de un programa. Esto es porque
al ejecutar un programa, diversas partes del mismo se pueden estar llevando acabo al mismo tiempo. El problema
es que un thread puede interrumpir a otro en cualquier momento. Por ejemplo, si tuviera un thread que está
escribiendo en un arreglo, y al mismo tiempo otro lo interrumpe y empieza a escribir sobre el mismo arreglo; esto
llevaría a un problema en nuestra aplicación o applet porque se están perdiendo datos. Lo que se debe hacer es
evitar estas situaciones, bloqueando ciertas partes del programa mientras otras se están llevando a cabo, es decir
“sincronizarlas”. Al estar sincronizados los métodos dentro de esta clase, mientras uno se lleva acabo, el otro tiene
que esperar a que acabe el primero antes de comenzar a ejecutarse. En otras palabras, no se puede acceder a ellos al
mismo tiempo desde distintos threads.
 
Nota:
Si no se utiliza alguno de los modificadores al momento de crear una clase, pordefecto, Java asume que la clase es:

 
No final
 
No abstracta
 
Subclase de la clase Object
 
No implementa interfaz alguno

CONCLUSIONES

Una clase vendría a ser una pieza de código en la que podemos definir una serie de datos y al mismo tiempo unos
métodos (funciones o procedimientos) que nos permitirán acceder a esos datos.

De acuerdo a los requerimientos del programador, se puede elegir entre usar un tipo de clase u otra. Con la
experiencia se puede saber qué clase es más útil en qué momento, en especial para el trabajo en programas con
muchas líneas de código.
Factores como la accesibilidad, la seguridad y la eficiencia determinan si se elige una clase u otra. Cada una con
sus ventajas y limitaciones propias. La forma en la que estas partes se encuentren implementadas, o para qué rango
de uso estén hechas determina su tipo.

También podría gustarte