WEBVTT

00:00.140 --> 00:01.180
Bentornati.

00:01.190 --> 00:04.370
Nell'ultima esercitazione abbiamo imparato a conoscere l'ereditarietà.

00:04.370 --> 00:09.650
La sottoclasse eredita gli attributi e i metodi della superclasse.

00:09.680 --> 00:17.210
In questo caso, il veicolo è la superclasse e l'auto eredita tutti i metodi e gli attributi

00:17.210 --> 00:18.380
del veicolo.

00:18.470 --> 00:27.350
Ora, se lo stesso metodo è definito sia nella superclasse che nella sottoclasse, il metodo della

00:27.350 --> 00:32.570
sottoclasse sovrascrive quello della superclasse.

00:32.570 --> 00:36.080
Questo è noto come overriding dei metodi.

00:36.080 --> 00:37.460
Facciamo un esempio.

00:37.460 --> 00:39.260
Questo è il metodo.

00:39.260 --> 00:43.460
Iniziare dalla classe madre o dalla superclasse.

00:43.460 --> 00:46.490
Lo escludo in macchina.

00:46.490 --> 00:58.580
Quindi andiamo a digitare void e si può vedere che Android studio suggerisce i metodi start e

00:58.580 --> 00:59.480
stop.

00:59.480 --> 01:07.170
Quindi, se faccio clic su Avvia, si può vedere che appare questa annotazione di sovrascrittura.

01:07.170 --> 01:16.590
Notate l'uso dell'annotazione override in questo esempio in Java, le annotazioni sono i metadati che utilizziamo

01:16.590 --> 01:20.490
per fornire informazioni al compilatore.

01:20.490 --> 01:29.220
Qui, l'annotazione override specifica al compilatore che il metodo dopo questa annotazione sovrascrive il metodo

01:29.220 --> 01:31.170
della superclasse.

01:31.170 --> 01:38.850
L'avvio è un metodo che viene sovrascritto dall'auto, ma ereditato dal veicolo.

01:38.850 --> 01:43.620
E si può vedere che Android studio genererà questo suggerimento una volta sovrascritto.

01:43.650 --> 01:44.760
Noi lo scavalchiamo.

01:44.760 --> 01:51.420
Ma ciò di cui beneficiamo, diciamo che nel veicolo, il veicolo si avvia.

01:51.420 --> 01:54.870
Quando si chiama il metodo, appare un messaggio.

01:54.870 --> 02:05.880
Avvio nel metodo di avvio dell'auto, rimuoverò super e creerò l'avvio dell'auto, non del veicolo.

02:05.940 --> 02:06.420
Ok.

02:06.420 --> 02:11.910
Quindi, quando chiamiamo l'inizio della classe auto, verrà stampato.

02:11.910 --> 02:13.770
L'auto si avvia.

02:13.890 --> 02:23.550
Andiamo alla mia classe, facciamo clic su run e vediamo che quando chiamiamo il metodo start del mio oggetto auto, viene

02:23.550 --> 02:24.780
stampato.

02:24.780 --> 02:29.730
L'auto parte che viene scavalcata dall'auto di classe.

02:29.730 --> 02:38.400
E se notate che quando chiamiamo il metodo stop che proviene dal veicolo, ma non lo sovrascriviamo nella

02:38.400 --> 02:47.400
classe auto, verrà stampato il messaggio che il veicolo si ferma, che è conforme al metodo stop del veicolo,

02:47.400 --> 02:49.410
che è la superclasse.

02:49.410 --> 02:53.070
Esistono alcune regole per il concetto di sovrascrittura in Java.

02:53.070 --> 03:00.480
Sia la superclasse che la sottoclasse devono avere lo stesso nome di metodo, lo stesso tipo di ritorno e lo

03:00.480 --> 03:02.550
stesso elenco di parametri.

03:02.550 --> 03:12.240
Quindi, ad esempio, non posso creare il metodo void stop con la lettera maiuscola e lo sto chiamando come overriding perché

03:12.240 --> 03:18.450
questo metodo è diverso da questo e Java è sensibile alle maiuscole.

03:18.450 --> 03:27.120
Quindi, ogni volta che specifico stop qui, si può vedere che viene sovrascritto da questo simbolo e non è obbligatorio aggiungere

03:27.120 --> 03:29.820
l'annotazione override.

03:29.820 --> 03:37.740
Non possiamo sovrascrivere i metodi dichiarati come finali e statici e dobbiamo utilizzare i metodi astratti

03:37.740 --> 03:39.870
della superclasse.

03:39.870 --> 03:44.190
Quindi, sovrascrivere sempre i metodi astratti di quella classe.

03:44.190 --> 03:45.780
Ma cosa sono gli abstract?

03:45.780 --> 03:49.290
Nel prossimo video parleremo dell'astrazione.
