Herencia

Una de las propiedades mássobresalientes de la programación orientada a objetos es la herencia, un mecanismo que sirve para definir objetos basado en otros existentes. Java soporta herencia con extensión de clases, que permite definir una nueva clase basada en otra clase ya existente sin modificarla. Tal nueva clase, llamada subclase o clase extendida, hereda los miembros de una superclase existente y añade otros miembros propios.

La herencia es siempre transitiva, de modo que una clase puede heredar características de superclases de muchos niveles. La definición de una subclase tiene la sintaxis siguiente:

public class nombreClass nombreClase extends ClaseBase

Ejemplo:

public class Circulo extends FiguraGeometrica

La clase Object

A menos que se especifique lo contrario, todas las clases se derivan de una clase raíz, denominada Object. La clase Object está en el nivel más alto de la jerarquía y se encuentra definida en la biblioteca java.lang. Cada clase del sistema java es un descendiente, directo o indirecto de la clase Object.La clase Object proporciona una funcionalidad mínima que grarantiza un comportamiento común a todos los objetos. Estos objetos incluyen los métodos siguientes:

Los métodos de la clase Object que se pueden anular o redefiner son:

  • clone
  • equals
  • finalize
  • toString

Los métodos que no se pueden anular en la clase Object, ya que son final, son:

  • getClass
  • notify
  • notifyAll
  • wait

A continuación, se proporciona una definicion de los métodos de la clase Object.

+++El método Clone

Se puede utilizar el método clone para crear objetos de otros objetos del mismo tipo.

+++El método equals

Se utiliza para determinar la igualdad de dos objetos. Este método devuelve true si los objetos son iguales y false en caso contrario.

El método finalize

Se redefine finalize para ejecutar operaciones especiales de limpieza antes de que se recoleccione la basura correspondiente al objeto o cuando el programa termina.

El método toString

El método toString de Object devuelve una repreentación String del objeto. La representacion String de un objeto depende totalmente del objeto. La representación String de un objeto Integer es el valor entero visulizado como texto.

El método getClass

El método getClass es un método fianl que devuelve una representación en tiempo de ejecución de la clase del objeto.Este método devuelve un objeto Class. Se puede consultar el objeto Class para obtener diversas informaciones sobre la clase, tal como su nombre, su superclase y los nombres de los interfaces que implementa.

Los modificadores

static: Define datos y métodos. Representa amplia información de la clase que se comparte por todas las instancias de las clases.

protected: A una característica protected sólo se puede acceder dentro de la definición de la clase en la que aparece, dentro de otras clases del mismo paquete o dentro de la definición de subclases.

public: Define clases, métodos y datos de tal modo que todos los programas puedan acceder a ellos.

private: Define métodos y datos de tal modo que se puede acceder a ellos por la declaración de la clase, pero no por sus subclases.

final: Se puede utilizar el modificador final para indicar que una clase es final y no puede ser una clase padre.

Interfaces

Una interfaz (interface) en java es una descripción de comportamiento.

Sintaxis

modificador interface NombreInterfaz
{

declaración de constantes
declaraciones de los métodos

}

Una interfaz se puede considerar una clase abstracta totalmente y en ella hay que tener en cuenta que:

Todos los miembros son públicos (no hay necesidad de declararlos públicos).
Todos los métodos son abstractos (se especifica el descriptor del método y no hay ninguna necesidad de declararlos abstact).
Todos los campos son static y final (proporcionan valores constantes útiles).

Consejo: Las clases abstractas y los interfaces se pueden utilizar para conseguir programación genérica. Se deben utilizar interfaces si se necesita herencia múltiple. Si la herencia que se necesita es simple, es suficiente el uso de clases absractas.

Precaución: La definición de una interfaz es similar a la definición de una clase abstracta. Existen, sin embargo, unas pocas diferencias:

En una interfaz los datos deben ser constantes; una clase abstracta puede tener todo tipo de datos.
Cada método de una interfaz tiene solo una signatura sin implementación; una clase abstracta puede tener métodos concretos.
Ningún modificador abstracto aparece en una interfaz; se debe poner el modificador abstract antes de un método abstracto en una clase abstracta.

Regla: Una vez que se ha definido una interfaz, el nombre de la interfaz se convierte en el nombre de un tipo. Cualquier clase que implemente la interfaz se convierte en un subtipo de ella. Una interfaz es un contrato entre proveedores y clientes de un servicio particular. El diseño de una interfaz afecta a las funcionalidades y capacidad en el lado proveedor y las complejidades y conveniencias en el lado cliente.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License