WEBVTT

00:00.170 --> 00:01.040
Bentornati.

00:01.040 --> 00:05.960
Nel video precedente abbiamo imparato a conoscere il primo tipo di astrazione in Java, ovvero la classe

00:05.960 --> 00:06.490
astratta.

00:06.500 --> 00:11.300
In questo video, impareremo a conoscere il secondo tipo di astrazione, ovvero l'interfaccia.

00:11.300 --> 00:18.110
Un'interfaccia è come un contratto o un insieme di regole che una classe può promettere di seguire.

00:18.110 --> 00:25.880
Definisce un insieme di metodi, firme, metodi senza implementazioni che ogni classe che implementa l'interfaccia

00:25.880 --> 00:27.680
deve fornire.

00:27.680 --> 00:34.370
Un'interfaccia fornisce un modo per ottenere l'astrazione e definire un comportamento comune che più classi possono

00:34.400 --> 00:37.220
condividere nella classe del veicolo.

00:37.220 --> 00:43.790
Qui definiamo una classe astratta, metodi astratti e metodi non astratti.

00:43.790 --> 00:49.100
Se osserviamo il metodo di arresto della macchina, possiamo ignorarlo.

00:49.100 --> 00:54.290
Si può notare che l'auto non sta implementando il metodo top.

00:54.290 --> 00:59.390
Ma pensate se è necessario implementare tutti questi metodi.

00:59.490 --> 01:06.390
Due quattro e costringere le classi e tutti i figli del veicolo a implementare questi metodi, perché tutti

01:06.390 --> 01:10.980
i veicoli dovrebbero partire, fermarsi e frenare in modo diverso.

01:10.980 --> 01:18.450
Quindi creerò una nuova interfaccia e la chiamerò interfaccia veicolo.

01:18.450 --> 01:23.270
Si può notare che si tratta di un'interfaccia pubblica per veicoli.

01:23.280 --> 01:31.830
In questa interfaccia, è necessario definire la firma del metodo per effettuare operazioni come l'avvio del veicolo, l'arresto

01:31.830 --> 01:32.550
e così via.

01:32.550 --> 01:40.020
Quindi tutti i metodi che dovrei forzare, tutti i tipi di veicoli da implementare, dovrei definirli in questa

01:40.020 --> 01:41.250
interfaccia.

01:41.250 --> 01:44.760
Avviare il motore, ad esempio.

01:44.760 --> 01:48.990
Il secondo metodo consiste nell'arrestare il motore.

01:49.020 --> 01:53.310
Il terzo metodo è accelerare e il quarto è frenare.

01:53.310 --> 01:55.890
Passiamo ora alla macchina.

01:55.890 --> 02:03.810
Rimuoviamo l'extends vehicle per ora e rimuoviamo tutti questi metodi e questi errori e qui implementerò

02:03.810 --> 02:12.360
l'alt vehicle più enter per implementare i metodi e possiamo vedere che abbiamo quattro metodi che dovremmo

02:12.360 --> 02:17.010
implementare in questa classe auto.

02:17.010 --> 02:17.910
Fare clic su OK.

02:17.910 --> 02:26.310
Ed ecco i quattro metodi ereditati da questa interfaccia astratta.

02:26.310 --> 02:36.300
Come si può vedere, implementando l'interfaccia del veicolo, la classe auto ha accettato di seguire le regole definite nell'interfaccia

02:36.300 --> 02:38.640
del veicolo.

02:38.640 --> 02:45.030
È quindi possibile definire, ad esempio, l'arresto del motore e l'accelerazione con il motore e il freno.

02:45.060 --> 02:54.000
Implementerò lo stesso con il camion e si può vedere che posso implementare l'interfaccia dopo l'estensione della classe che

02:54.000 --> 03:01.080
implementa l'interfaccia del veicolo alt più enter, implementare i metodi e possiamo vedere che ne

03:01.080 --> 03:04.260
abbiamo tre perché il metodo brake è pronto.

03:04.260 --> 03:06.990
E lasciatemi togliere il freno.

03:07.020 --> 03:14.040
Si può notare che c'è un errore perché il veicolo contiene un vuoto astratto.

03:14.160 --> 03:21.300
Per ora lo rimuovo e lo terrò nel freno per l'interfaccia del veicolo.

03:21.300 --> 03:29.580
Allo stesso modo, qui nella classe camion, definirò questi messaggi, l'avvio del motore del camion, l'arresto del motore del

03:29.580 --> 03:34.080
camion e l'accelerazione e l'azionamento del freno con il camion.

03:34.080 --> 03:37.200
Passiamo ora alla classe Y.

03:37.200 --> 03:45.900
E qui ho bisogno di definire un'auto, perché ora l'auto non si estende al veicolo.

03:45.930 --> 03:55.860
V one dot start engine v two dot start engine o start perché è ereditato dal veicolo e devo cambiare

03:55.860 --> 04:04.410
il veicolo in un camion per usare i metodi implementati dall'interfaccia.

04:04.410 --> 04:11.190
Il veicolo non ha implementato l'interfaccia del veicolo, mentre il camion l'ha implementata, quindi devo usare

04:11.190 --> 04:13.050
il camion invece del veicolo.

04:13.080 --> 04:14.910
V due punti accelerano.

04:14.910 --> 04:21.450
Lasciatemi correre e vedrete che l'avvio del motore con V uno, che è l'auto che il camion avvia e l'accelerazione

04:21.450 --> 04:29.130
con il camion Le interfacce sono molto utili in Java perché consentono l'ereditarietà multipla, permettendo a una classe

04:29.130 --> 04:35.310
di implementare più interfacce e di ereditare comportamenti da fonti diverse.

04:35.310 --> 04:43.620
È molto importante notare che in Java esiste solo un mono extend dalle classi.

04:43.620 --> 04:52.980
Quindi, per esempio, estende il veicolo qui e non posso creare, per esempio, che estende da una classe chiamata macchina

04:52.980 --> 04:59.880
perché l'ereditarietà multipla usando extends non è consentita in Java.

05:00.190 --> 05:05.920
Anche se è possibile creare un trucco per farlo in Java.

05:05.950 --> 05:13.720
L'ereditarietà multipla crea un'interfaccia multipla, in modo da poter creare molti implementatori

05:13.720 --> 05:19.090
di interfacce, ad esempio l'interfaccia macchina e altre interfacce.

05:19.090 --> 05:25.150
In Java, quindi, l'ereditarietà multipla si ottiene utilizzando le interfacce.
