Suponiendo que
no hablas de Interfaces Gráficas:
Una interface es una clase que contiene sólo métodos abstractos y atributos que son static y final. Un ejemplo sencillo, supongamos que estás programando un videojuego, tiene varios vehículos, algunos de estos vuelan y otros se sumergen en el agua, pero todos se mueven y disparan, así que podríamos hacer esto:
Código Java:
Ver originalinterface Volador{
//Los atributos son final y static,
//pero no tienes que ponerlo,
//lo mismo con los métodos abstractos.
int ALTURA_DE_VUELO = 20;
void despegar();
void aterrizar();
}
interface Sumergible{
int PROFUNDIDAD = -20;
void sumergirse();
void emerger();
}
Ahora podríamos tener cuatro clases de las que se deriven todo tipo de vehículos:
Código Java:
Ver originalclass Vehiculo{
void avanzar(){
//Definición método Avanzar
}
void detenerse(){
//Definición método Detenerse
}
}
class VehiculoQueVuela extends Vehiculo implements Volador{
void despegar(){
//Definición método
}
void aterrizar(){
//Definición método
}
}
class VehiculoQueSeSumerge extends Vehiculo implements Sumergible{
void sumergirse(){
//Definición método
}
void emerger(){
//Definición método
}
}
class VehiculoQueSeSumergeYVuela extends Vehiculo implements Sumergible, Volador{
void despegar(){
//Definición método
}
void aterrizar(){
//Definición método
}
void sumergirse(){
//Definición método
}
void emerger(){
//Definición método
}
}
Con eso podríamos tener algo como esto:
Código Java:
Ver originalVehiculoQueSeSumergeYVuela vehiculo = new VehiculoQueSeSumergeYVuela();
vehiculo.avanzar();
vehiculo.despegar();
vehiculo.aterrizar();
vehiculo.sumergirse();
vehiculo.emerger();
En resumen, las interfaces son clases puramente abstractas, y como tales no permiten la instanciación, una clase puede implementar varias interfaces y las interfaces se puede heredar de otras interfaces.
Cualquier duda me dices.
Saludos