Interfaces en Java

Introducción a la Programación Orientada a Objetos en Java

Sani Yusuf

Lead Software Engineering Content Developer

Limitaciones de la herencia

  • Con la herencia, se heredan todos los miembros
  • No puedes heredar miembros de forma selectiva

  // Clase Car   
  class Car {
    // La capacidad de batería solo aplica
    // a los coches eléctricos
    public int batteryCapacity;

    void drive() {

    }  
  }


  // Clase Toyota
  class Toyota extends Car {  
    void drive(){

    }           
  }


// Clase Main public static class Main { public static void main(String[] args) { Toyota myToyota = new Toyota(); // Todos los coches heredarán "batteryCapacity" // aunque no sean eléctricos System.out.println( myToyota.batteryCapacity); // No aplica } }
Introducción a la Programación Orientada a Objetos en Java

Crear interfaces

  • Las interfaces permiten heredar propiedades y métodos de forma selectiva
  • Las clases usan interfaces con la palabra clave implements

  // Interfaz ElectricCar 
  interface ElectricCar {

  }





  // Tesla implementa la
  // interfaz ElectricCar
  class Tesla implements ElectricCar {

  }








Introducción a la Programación Orientada a Objetos en Java

Añadir propiedades a las interfaces

  • Por convención, las propiedades usan UPPER_SNAKE_CASE
  • El valor debe fijarse al declararlo y no se puede cambiar
  • Las propiedades son public static final de forma implícita

  interface ElectricCar {
    // Implícitamente public static final
    // No se puede cambiar
    int BATTERY_CAPACITY = 310;

  }




Introducción a la Programación Orientada a Objetos en Java

Añadir métodos de interfaz

  • Normalmente, las interfaces contienen métodos
  • Los métodos son abstract por defecto, sin implementación
  • Las interfaces pueden tener métodos concretos con implementación
  • Todos los métodos abstract deben implementarse en la subclase
  interface ElectricCar {
    // Implícitamente public static final
    // No se puede cambiar
    int BATTERY_CAPACITY = 310;


// Este es un método abstract por defecto void charge();
// Este es un método concreto void autoPark() { }
}
class Tesla implements ElectricCar { // Debe implementarse public void charge() { } }
Introducción a la Programación Orientada a Objetos en Java

¡Vamos a practicar!

Introducción a la Programación Orientada a Objetos en Java

Preparing Video For Download...