1. Balene e mucche
Ecco un fatto zoologico interessante: una mucca è molto più vicina a una balena che, ad esempio, a un ippopotamo. Si scopre che mucche e balene sono parenti relativamente stretti.
Guarda qui. Parliamo del polimorfismo , un altro strumento molto potente di OOP . Ha quattro caratteristiche.
2. L'eredità non è una panacea
Immagina di aver scritto una Cow
lezione per un gioco. Ha molti campi e metodi. Gli oggetti di questa classe possono fare varie cose: camminare, mangiare e dormire. Anche le mucche indossano un campanello che suona quando camminano. Supponiamo di aver implementato tutto nella classe nei minimi dettagli.
E poi arriva il tuo cliente e dice che vuole rilasciare un nuovo livello di gioco, in cui tutta l'azione si svolge in mare, e il personaggio principale è una balena.
Inizi a progettare una Whale
classe e ti rendi conto che è solo leggermente diversa dalla Cow
classe. La logica di entrambe le classi è molto simile e si decide di utilizzare l'ereditarietà.
La Cow
classe è ideale per assumere il ruolo della classe genitore: ha tutte le variabili ei metodi necessari. Tutto quello che dobbiamo fare è dare alla balena la capacità di nuotare. Ma c'è un problema: la tua balena ha zampe, corna e un campanello. Dopotutto, questa funzionalità è implementata all'interno della Cow
classe. Cosa si può fare qui?
3. Override del metodo
L'override del metodo viene in nostro soccorso. Se abbiamo ereditato un metodo che non fa esattamente quello che vogliamo nella nostra nuova classe, possiamo sostituire quel metodo con un altro.
Come si fa? Nella nostra classe discendente, dichiariamo lo stesso metodo del metodo della classe genitore che vogliamo sovrascrivere. Scriviamo il nostro nuovo codice in esso. E questo è tutto: è come se il vecchio metodo nella classe genitore semplicemente non esistesse.
Ecco come funziona:
Codice | Descrizione |
---|---|
|
|
|
Questo codice visualizza il seguente testo sullo schermo:
|
|
Questo codice mostra quanto segue sullo schermo:
|
Dopo aver ereditato la Cow
classe e sovrascritto il printName
metodo, la Whale
classe contiene effettivamente i seguenti dati e metodi:
|
Non conosciamo nessun vecchio metodo. |
GO TO FULL VERSION