Clases abstractas vs Interfaces en Java segundo intento

CLASES ABSTRACTAS

Una clase abstracta representa una entidad, en la jerarquía de clases, que usualmente no está completamente definida  para ser útil por sí misma. Su propósito es ofrecer descripciones parciales que puedan ser heredadas por otras clases que se encargan de  concretar esas especificaciones.

Una clase abstracta es una clase declarada absract y puede contener o no métodos abstractos. Las clases abstractas no se pueden instanciar pero sirven de superclases para que otras clases puedan heredar de ellas.

Cualquier clase que contenga uno o más métodos abstractos se debe declarar abstracta.

MÉTODOS ABSTRACTOS

En Programación Orientada a Objetos (POO) las clases son los “moldes” de los cuales se fabrican los objetos (instancias). Las clases se componen de atributos (datos) y  métodos (funcionalidad).

Un método se compone de dos (2) partes básicas;  encabezado (declaración) y cuerpo.

Imagen

En la declaración se encuentran:

  • La accesibilidad (que otras clases y objetos pueden invocar al método)  private, public, protected.
  • El tipo de retorno, por ejemplo, void, int, String.
  • Nombre del método (identificador) encontrarNumero
  • La cantidad y el tipo de parámetros que  acepta el método: (int menor,  int mayor)

El cuerpo de un método va encerrado entre llaves curvas { … } y contiene las sentencias algorítmicas que definen una funcionalidad.

Un método abstracto es un método sin cuerpo. 

Imagen

Ahora el método encontrarNumero es abstracto y pertenece a una clase abstracta. Nótese que el método termina en punto y coma (;) y  no tiene las llaves del cuerpo .

Las clases que hereden de ClaseAbstracta deben implementar el método encontrarNumero o en su defecto ser declaradas clases abstractas.

Imagen

La clase ClaseInstanciable hereda de clase ClaseAbstracta y debe ofrecer la implementación del método encontrarNumero. Nótese que en esta clase el método tiene cuerpo.

Anuncios

4 responses to this post.

  1. Posted by Mr on junio 22, 2012 at 6:12 pm

    No se si te falto una palabrita, o no se…
    “Una clase abstracta es una clase declarada absract y puede contener o no métodos abstractos”

    y mas abajo dice :
    “Cualquier clase que contenga uno o más métodos abstractos se debe declarar abstracta.”

    si una clase es Declara Abstract debe contener, al menos, 1 método abstract

    Responder

    • Posted by kikev on agosto 20, 2012 at 11:01 am

      Primer punto de su interesante inquietud:
      Cuando una clase se declara abstract no necesariamente debe contener métodos abstractos. En otras palabras se puede declarar una clase abstracta y dentro de ella no haber ningún método abstracto.
      Segundo punto: Si en una clase Ud. declara un método abstracto, la clase necesariamente debe ser declarada abstracta.
      Finalmente Ud. anota: “si una clase es Declara Abstract debe contener, al menos, 1 método abstract”. La respuesta es no, de acuerdo a lo sostenido en el primer punto. No es obligatorio que una clase abstracta tenga métodos abstractos.

      Responder

  2. Posted by linkill on julio 15, 2013 at 2:47 pm

    Muy buena explicación….

    Responder

  3. Posted by William on septiembre 9, 2013 at 7:48 pm

    Y las Interfaces???

    Responder

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: