Bentornati.
Nell'ultima esercitazione abbiamo imparato a conoscere l'ereditarietà.
La sottoclasse eredita gli attributi e i metodi della superclasse.
In questo caso, il veicolo è la superclasse e l'auto eredita tutti i metodi e gli attributi
del veicolo.
Ora, se lo stesso metodo è definito sia nella superclasse che nella sottoclasse, il metodo della
sottoclasse sovrascrive quello della superclasse.
Questo è noto come overriding dei metodi.
Facciamo un esempio.
Questo è il metodo.
Iniziare dalla classe madre o dalla superclasse.
Lo escludo in macchina.
Quindi andiamo a digitare void e si può vedere che Android studio suggerisce i metodi start e
stop.
Quindi, se faccio clic su Avvia, si può vedere che appare questa annotazione di sovrascrittura.
Notate l'uso dell'annotazione override in questo esempio in Java, le annotazioni sono i metadati che utilizziamo
per fornire informazioni al compilatore.
Qui, l'annotazione override specifica al compilatore che il metodo dopo questa annotazione sovrascrive il metodo
della superclasse.
L'avvio è un metodo che viene sovrascritto dall'auto, ma ereditato dal veicolo.
E si può vedere che Android studio genererà questo suggerimento una volta sovrascritto.
Noi lo scavalchiamo.
Ma ciò di cui beneficiamo, diciamo che nel veicolo, il veicolo si avvia.
Quando si chiama il metodo, appare un messaggio.
Avvio nel metodo di avvio dell'auto, rimuoverò super e creerò l'avvio dell'auto, non del veicolo.
Ok.
Quindi, quando chiamiamo l'inizio della classe auto, verrà stampato.
L'auto si avvia.
Andiamo alla mia classe, facciamo clic su run e vediamo che quando chiamiamo il metodo start del mio oggetto auto, viene
stampato.
L'auto parte che viene scavalcata dall'auto di classe.
E se notate che quando chiamiamo il metodo stop che proviene dal veicolo, ma non lo sovrascriviamo nella
classe auto, verrà stampato il messaggio che il veicolo si ferma, che è conforme al metodo stop del veicolo,
che è la superclasse.
Esistono alcune regole per il concetto di sovrascrittura in Java.
Sia la superclasse che la sottoclasse devono avere lo stesso nome di metodo, lo stesso tipo di ritorno e lo
stesso elenco di parametri.
Quindi, ad esempio, non posso creare il metodo void stop con la lettera maiuscola e lo sto chiamando come overriding perché
questo metodo è diverso da questo e Java è sensibile alle maiuscole.
Quindi, ogni volta che specifico stop qui, si può vedere che viene sovrascritto da questo simbolo e non è obbligatorio aggiungere
l'annotazione override.
Non possiamo sovrascrivere i metodi dichiarati come finali e statici e dobbiamo utilizzare i metodi astratti
della superclasse.
Quindi, sovrascrivere sempre i metodi astratti di quella classe.
Ma cosa sono gli abstract?
Nel prossimo video parleremo dell'astrazione.