Anda di halaman 1dari 2

Clases Abstractas en Java

Veamos como primer post en este blog las Clases Abstractas de Java. El concepto es sencillo:
0 abstract class Ejemplo{ 1 2} abstract miMetodo();

Estudiemos pues este sencillo ejemplo: 1. Para empezar identificamos la clase abstracta con la palabra reservadaabstract. 2. Esta clase abstracta tiene un mtodo abstracto. Por cierto, este no tiene body. Eso es porque los mtodos abstractos no necesitan cuerpo. Y qu pasa si?
0 <code>abstract class OtroEjemplo{ 1} 2 </code>

Caramba! Correcto o incorrecto? Esto es completamente correcto Puesto que las clases abstractas tienen de 0 a N mtodos abstractos Sin embargo, el chiste de una clase abstracta es que precisamente tenga un mtodo abstracto Y entonces para que nos sirven las clases abstractas? Las clases abstractas cumplen una funcin muy especial Slo sirven para la herencia. Otro detalle:No se pueden instanciar, jamas, es imposible encontrar un objeto de las clases Ejemplo y OtroEjemplo. Vamos entrando en detalle Clase Animal:
0 abstract class Animal{ 1 2} public abstract void habla();

Clase Perro:
0 class Perro extends Animal{ 1 2 3 4} public void habla(){ System.out.println("Guau, guau!"); }

y la clase Gato:

0 class Gato extends Animal{ 1 2 3 4} public void habla(){ System.out.println("Miau, miau!"); }

Este ejemplo es mucho ms claro Sabemos que todos los animales hablan, pero no todos lo hacen de la misma forma Por eso heredamos de la clase Animal el mtodo abstracto habla y lo implementamos en las clases Perro y Gato Qu pasa si?
0 class Gato extends Animal{ 1 2 3 4} public void hablaGato(){ System.out.println("Miau, miau"); }

Este cdigo es totalmente incorrecto. Siempre que una clase hereda de una clase abstracta est obligada a usar un mtodo con el mismo nombre, pero esta vez con sentencias dentro de las {llaves}. Vamos ms adentro
0 public class Eject{ 1 2 3 4 } 5} public static void main(String... args){ Animal donGato = new Gato(); Animal benitoBodoque = new Gato();

Hasta este momento el cdigo es correcto. Estamos creando una referencia de la clase abstracta Animal. Pero recordemos, no podemos generar un objeto de tipo Animal. Sin embargo, podemos con la referencia de la clase Animal crear un objeto de la clase Gato o de la clase Perro.