Una clase abstracta representa características comunes de clases derivadas pero no objetos concretos, mientras que una interfaz define un conjunto de métodos públicos sin implementación. Las clases organizan en paquetes y heredan de clases abstractas e implementan interfaces.
2. Clase abstracta e interface
Una clase abstracta es la que representa la parte común de la
clases que se derivan de ellas, pero que no representan ningún
objeto existente.
Una clase abstracta puede utilizarse como base de herencia, pero no
para instanciar objetos.
Una interfaz definen una interfaz pública (conjunto de métodos)
sin especificar su implementación.
Cuando una clase implementa una interfaz tiene que incluir en su
interfaz pública la declaración de todos los métodos definidos en
ella.
2
3. Organización del diseño
El diseño de una aplicación puede requerir la definición de muchas
clases. Estas clases se organizan en contenedores que se denominan
paquetes.
Algunos paquetes son desarrollados como parte del diseño, pero
la mayoría de los paquetes y de las clases son legados (previamente
diseñados) e importados en el proyecto de la aplicación.
3
4. 4
Una interfaz es una clase completamente abstracta (una clase sin
implementación). En el ejemplo , si no estuviera interesada en conocer la
posición de una Figura, podríamos eliminar por completo su implementación
y convertir.
5. 5
public interface Figura
{
public double area ();
}
En Java, las interfaces se declaran con la palabra reservada interface de
manera similar a como se declaran las clases abstractas.
− En la declaración de una interfaz, lo único que puede aparecer son
declaraciones de métodos (su nombre y signatura, sin su implementación) y
definiciones de constantes simbólicas.
6. Una interfaz no encapsula datos, sólo define cuáles son los métodos que han de
implementar los objetos de aquellas clases que implementen la interfaz.
public class Circulo implements Figura
{
private double radio;
public Circulo (double radio)
{
this.radio = radio;
}
public double area ()
{
return Math.PI*radio*radio;
}
}
6