Interfacce in Java

Introduzione alla programmazione orientata agli oggetti in Java

Sani Yusuf

Lead Software Engineering Content Developer

Limiti dell'ereditarietà

  • Con l'ereditarietà, tutti i membri sono ereditati
  • Non puoi ereditare membri in modo selettivo

  // Classe Car   
  class Car {
    // La capacità della batteria vale
    // solo per le auto elettriche
    public int batteryCapacity;

    void drive() {

    }  
  }


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

    }           
  }


// Classe Main public static class Main { public static void main(String[] args) { Toyota myToyota = new Toyota(); // Tutte le auto erediteranno "batteryCapacity" // anche se non sono elettriche System.out.println( myToyota.batteryCapacity); // Non applicabile } }
Introduzione alla programmazione orientata agli oggetti in Java

Creare interfacce

  • Le interfacce permettono di ereditare proprietà e metodi in modo selettivo
  • Le classi usano le interfacce con la keyword implements

  // Interfaccia ElectricCar 
  interface ElectricCar {

  }





  // Tesla che implementa
  // l'interfaccia ElectricCar
  class Tesla implements ElectricCar {

  }








Introduzione alla programmazione orientata agli oggetti in Java

Aggiungere proprietà alle interfacce

  • Per le proprietà si usa per convenzione UPPER_SNAKE_CASE
  • Il valore va impostato subito e non può essere cambiato
  • Le proprietà sono public static final in automatico

  interface ElectricCar {
    // Implicitamente public static final
    // Non può essere cambiato
    int BATTERY_CAPACITY = 310;

  }




Introduzione alla programmazione orientata agli oggetti in Java

Aggiungere metodi di interfaccia

  • Le interfacce di solito contengono metodi
  • I metodi sono abstract per impostazione predefinita, senza implementazione
  • Le interfacce possono avere metodi concreti con implementazione
  • Tutti i metodi abstract devono essere implementati nella sottoclasse
  interface ElectricCar {
    // Implicitamente public static final
    // Non può essere cambiato
    int BATTERY_CAPACITY = 310;


// Di default è un metodo astratto void charge();
// Questo è un metodo concreto void autoPark() { }
}
class Tesla implements ElectricCar { // Deve essere implementato public void charge() { } }
Introduzione alla programmazione orientata agli oggetti in Java

Esercitiamoci!

Introduzione alla programmazione orientata agli oggetti in Java

Preparing Video For Download...