Interfaces em Java

Introdução à Programação Orientada a Objetos em Java

Sani Yusuf

Lead Software Engineering Content Developer

Limitações da herança

  • Com herança, todos os membros são herdados
  • Você não pode herdar membros seletivamente

  // Car class   
  class Car {
    // Battery capacity is only applicable
    // to electric cars
    public int batteryCapacity;

    void drive() {

    }  
  }


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

    }           
  }


// Man class public static class Main { public static void main(String[] args) { Toyota myToyota = new Toyota(); // All cars will inherit the "batteryCapacity" // even if they are not electric cars System.out.println( myToyota.batteryCapacity); // Not applicable } }
Introdução à Programação Orientada a Objetos em Java

Criando interfaces

  • Interfaces permitem herdar propriedades e métodos seletivamente
  • Classes usam interfaces com a palavra-chave implements

  // ElectricCar Interface 
  interface ElectricCar {

  }





  // Tesla implementando a
  // interface ElectricCar
  class Tesla implements ElectricCar {

  }








Introdução à Programação Orientada a Objetos em Java

Adicionando propriedades a interfaces

  • Por convenção, propriedades usam UPPER_SNAKE_CASE
  • O valor deve ser definido na hora e não pode mudar
  • Propriedades são public static final nos bastidores

  interface ElectricCar {
    // Implictly public static final
    // Cannot be changed
    int BATTERY_CAPACITY = 310;

  }




Introdução à Programação Orientada a Objetos em Java

Adicionando métodos de interface

  • Interfaces normalmente abrigam métodos
  • Os métodos são abstract por padrão, sem implementação
  • Interfaces podem ter métodos concretos com implementação
  • Todos os métodos abstract devem ser implementados na subclasse
  interface ElectricCar {
    // Implictly public static final
    // Cannot be changed
    int BATTERY_CAPACITY = 310;


// This is an abstract method by default void charge();
// This is a concrete method void autoPark() { }
}
class Tesla implements ElectricCar { // Must be implemented public void charge() { } }
Introdução à Programação Orientada a Objetos em Java

Vamos praticar!

Introdução à Programação Orientada a Objetos em Java

Preparing Video For Download...