Interfaz Java
Interfaces
Otra forma de lograr la abstracción en Java es con interfaces.
An interface
es una " clase abstracta " completamente que se usa para agrupar métodos relacionados con cuerpos vacíos:
Ejemplo
// interface
interface Animal {
public void animalSound(); // interface method (does not have a body)
public void run(); // interface method (does not have a body)
}
Para acceder a los métodos de la interfaz, la interfaz debe ser "implementada" (algo así como heredada) por otra clase con la implements
palabra clave (en lugar de extends
). El cuerpo del método de interfaz lo proporciona la clase "implementar":
Ejemplo
// Interface
interface Animal {
public void animalSound(); // interface method (does not have a body)
public void sleep(); // interface method (does not have a body)
}
// Pig "implements" the Animal interface
class Pig implements Animal {
public void animalSound() {
// The body of animalSound() is provided here
System.out.println("The pig says: wee wee");
}
public void sleep() {
// The body of sleep() is provided here
System.out.println("Zzz");
}
}
class Main {
public static void main(String[] args) {
Pig myPig = new Pig(); // Create a Pig object
myPig.animalSound();
myPig.sleep();
}
}
Notas sobre las interfaces:
- Al igual que las clases abstractas , las interfaces no se pueden usar para crear objetos (en el ejemplo anterior, no es posible crear un objeto "Animal" en MyMainClass)
- Los métodos de interfaz no tienen cuerpo: el cuerpo lo proporciona la clase "implementar"
- En la implementación de una interfaz, debe anular todos sus métodos
- Los métodos de interfaz son por defecto
abstract
ypublic
- Los atributos de la interfaz son por defecto
public
ystatic
final
- Una interfaz no puede contener un constructor (ya que no se puede usar para crear objetos)
¿Por qué y cuándo usar interfaces?
1) Para lograr la seguridad, oculte ciertos detalles y solo muestre los detalles importantes de un objeto (interfaz).
2) Java no admite "herencia múltiple" (una clase solo puede heredar de una superclase). Sin embargo, se puede lograr con interfaces, porque la clase puede implementar múltiples interfaces. Nota: Para implementar múltiples interfaces, sepárelas con una coma (vea el ejemplo a continuación).
Múltiples interfaces
Para implementar varias interfaces, sepárelas con una coma:
Ejemplo
interface FirstInterface {
public void myMethod(); // interface method
}
interface SecondInterface {
public void myOtherMethod(); // interface method
}
class DemoClass implements FirstInterface, SecondInterface {
public void myMethod() {
System.out.println("Some text..");
}
public void myOtherMethod() {
System.out.println("Some other text...");
}
}
class Main {
public static void main(String[] args) {
DemoClass myObj = new DemoClass();
myObj.myMethod();
myObj.myOtherMethod();
}
}