‫Nell'ultimo video, hai imparato a conoscere l'ereditarietà e le basi dell'ereditarietà, ma ora andiamo un
‫po' più a fondo e diamo un'occhiata a diverse parole chiave che saranno rilevanti quando si tratta di ereditarietà.
‫E quelli che esamineremo saranno virtuali e la parola chiave override.
‫Ora, potresti chiederti, perché abbiamo animali qui sullo schermo?
‫Perché questo mostra un mucchio di immagini di animali?
‫Bene, il fatto è che implementeremo una classe animale che ci permetterà poi di ereditare da un
‫animale sarà la classe genitore, che ha un paio di abilità, come ad esempio cosa può fare un animale?
‫Può emettere un suono, può mangiare e può suonare.
‫Questo è almeno ciò che consentiremo di fare alla classe degli animali.
‫E, naturalmente, un animale può fare molto di più.
‫Gli daremo un paio di proprietà come il nome The Age property, quindi se ha fame, per esempio.
‫Quindi solo se ha fame mangerà, altrimenti non mangerà.
‫Quindi questa è davvero l'idea di creare una classe di animali.
‫E ora potresti, ovviamente, andare avanti e implementare già questa classe da solo.
‫E poi useremo l'ereditarietà non solo per usare gli stessi metodi e le stesse proprietà, ma anche
‫per sovrascriverli, dicendo fondamentalmente, OK, il suono che fa un animale che è un cane sarà diverso dal suono che, per esempio,
‫fa una scimmia o fa una scimmia o fa una giraffa o qualcosa del
‫genere.
‫OK, quindi questo è fondamentalmente ciò che implementeremo.
‫E così facendo, impareremo le diverse parole chiave come virtual e la parola chiave override.
‫Quindi usciamo e creiamo un nuovo progetto per questo.
‫Userò un'applicazione console.
‫Lo chiamerò demo di override virtuale.
‫Tutto bene.
‫Come piccola sfida per te, se vuoi provarlo tu stesso, per favore scrivi una classe
‫che si chiamerà animale e avrà le proprietà nome età è affamata.
‫Quindi, ovviamente, un costruttore, quindi un metodo si chiama fare suoni, mangiare e giocare.
‫OK, quindi possibilmente implementali tutti se vuoi, perché questo ti darà solo un po' di
‫pratica per creare tutti questi diversi metodi.
‫E poi vedremo come cambiarli un po' in modo da poterli usare correttamente nell'ereditarietà.
‫Va bene, quindi spero che tu l'abbia provato, quindi, ovviamente, possiamo usare Casey controllato per creare una
‫nuova classe e chiamerò questo animale.
‫Così e ora questa classe animale avrà un paio di proprietà, come ho detto, quindi la
‫proprietà name, la proprietà, così come la proprietà his affamato, e poi un semplice costruttore che usa tutte queste proprietà, puoi vedere
‫che stai solo usando GetSet.
‫A proposito, se vuoi creare una proprietà molto velocemente, inserisci prop doppio tap e quindi inserisci il tipo,
‫ad esempio, stringa e poi qui, ad esempio, nome.
‫Quindi è così che lo faresti molto rapidamente, senza dover digitare più del necessario.
‫Tutto bene.
‫Quindi questo sarà il nostro costruttore qui con il nome The Age e ha fame e puoi
‫vedere che ha fame non è qualcosa che imposteremo all'animale una volta creato, ma
‫lo imposteremo su disegnare all'inizio per impostazione predefinita.
‫Quindi lo sto solo impostando sul suo default affamato.
‫OK, quindi ora ho detto che voglio avere un metodo che si chiamerà crea suoni.
‫Quindi diamo un'occhiata a questo metodo.
‫Quindi sto usando un metodo virtuale vuoto, emetti suoni per altre classi da sovrascrivere.
‫Sto rendendo virtuale questo metodo in modo che possa essere sovrascritto da classi che ereditano da animal.
‫E vedremo più avanti come farlo perché il suono che emette un animale dipenderà
‫molto dall'animale stesso.
‫Quindi essere affamati è qualcosa che ogni animale condivide perché, beh, è così che funzioniamo.
‫Abbiamo bisogno di energia e la otteniamo attraverso il cibo.
‫E per motivarci a procurarci del cibo oa mangiare del cibo, abbiamo il senso della fame.
‫Ma questo metodo virtuale che abbiamo qui fa i suoni non deve essere vuoto.
‫Quindi diamo un'occhiata a questo metodo di mangiare qui.
‫E questo metodo di mangiare sarà anche un metodo virtuale.
‫Ciò consente alle nostre sottoclassi di sovrascrivere questo metodo.
‫Quindi, se vogliamo sovrascrivere il metodo, possiamo farlo, ma non è necessario.
‫La funzionalità generale sarà quella che puoi vedere qui.
‫Quindi controllerà se l'animale ha fame.
‫Se lo è, stamperà semplicemente il nome e dirà che sta mangiando e poi se non ha fame, dirà
‫che il nome non ha fame.
‫Quindi il nome è, tra l'altro, di proprietà del nostro animale.
‫Quindi questo nome proprietà dell'animale.
‫OK, questo sarà il nostro metodo di consumo e lo renderemo anche virtuale.
‫E poi un altro metodo virtuale che sarà quello di giocare.
‫OK, quindi questo metodo virtuale come quello che sostanzialmente dirà che il nome sta giocando sulla console.
‫Ora stiamo usando alcune semplici istruzioni sulla riga di destra, questo potrebbe essere, ovviamente, molto più complesso.
‫OK, questo è solo per semplificare il tutto e renderlo più umanamente comprensibile, per così dire, perché giocare,
‫mangiare e cose del genere, questo è qualcosa che possiamo capire direttamente perché l'abbiamo visto
‫nelle nostre vite e l'abbiamo fatto noi stessi, oltre a leggere dati da un database o qualcosa del
‫genere.
‫Non è qualcosa che di solito vediamo nella vita reale.
‫Bene.
‫Tutto bene.
‫Quindi ora definiamo le nostre classi che saranno derivate da animal, in modo che erediteranno dalla classe animal.
‫Quindi andiamo avanti e usiamo il controllo K e vediamo la nostra valuta comune.
‫E questo aprirà quindi la schermata in cui possiamo quindi creare una classe o in alternativa semplicemente creare
‫una classe.
‫Altrimenti, creerò una classe di cani e questa classe erediterà dall'animale in questo modo.
‫Ora, puoi già vedere che non c'è alcun argomento dato che corrisponda al nome del parametro formale
‫richiesto della stringa del nome dell'animale.
‫Quindi dobbiamo creare un costruttore qui.
‫Quindi andiamo avanti e creiamo un semplice costruttore, che seguirà la stessa struttura.
‫Avrà il nome e l'età e avrà un nome di base ben utilizzato in modo che possiamo usare lo stesso costruttore che
‫abbiamo definito quell'animale.
‫Quindi ora userò questa nuova proprietà chiamata Abie o è felice e questo sarà un booleano.
‫Questo fondamentalmente memorizzerà solo se l'animale in questo caso, il cane è felice.
‫Quindi dirà vero se il cane è felice e i cani sono animali felici.
‫Quindi, per impostazione predefinita, il cane sarà felice.
‫Tutto bene.
‫Ora sovrascriviamo il metodo ITW.
‫OK, quindi sovrascriviamo semplicemente il metodo virtuale, eat, e quindi stiamo usando questa parola chiave di override.
‫OK, quindi bene pubblico, come un metodo normale, ma stiamo aggiungendo questa tastiera di sostituzione.
‫Quindi sovrascrivi void ITW stesso due o simile a quello che avevamo qui dove avevamo anche questo metodo.
‫Ma qui abbiamo usato una tastiera virtuale.
‫Quindi questa tastiera virtuale consente alle nostre sottoclassi, alle nostre classi ereditarie dei figli, di utilizzare la
‫parola override per ignorarne sostanzialmente la funzionalità.
‫Se vuoi ancora chiamare la funzionalità di base della classe genitore della classe animale, in questo
‫caso, dobbiamo usare la base DOT mangia OK, la base dirà OK chiamato il metodo della base e la base sarà bene
‫vedi qui animale.
‫Quindi, una volta che fai doppio clic sulla base ed è evidenziato, puoi vedere che anche l'animale è evidenziato perché
‫l'animale è la tua classe base.
‫Se mantieni il tasto di controllo HELT e fai clic su base, passerà alla classe animale perché è
‫la classe base.
‫E puoi vedere che ci sono tre riferimenti della nostra classe base ed è qui, questa base, così come
‫questa base e questo animale qui in alto.
‫OK, quindi a questo punto stiamo praticamente usando la nostra classe base qui, la funzionalità della classe base.
‫Non stiamo scavalcando nulla.
‫Quindi fondamentalmente stiamo dicendo che un cane è come qualsiasi altro animale.
‫Quindi niente di speciale qui.
‫Ora, diamo un'occhiata al metodo di creazione del suono, perché questo sarà molto diverso perché il cane deve
‫emettere i suoni nel modo giusto e il suo modo di emettere suoni sarà il woof.
‫Potrebbe essere anche woof o who per qualunque cosa.
‫Tuttavia, al tuo cane piace emettere suoni.
‫Ed è così che nel mio caso il cane emetterà un suono.
‫Quindi questo sarà diverso per ogni animale.
‫OK, quindi ogni animale farà la differenza.
‫Ed è per questo che stiamo scavalcando il nostro make sound.
‫Bene, con bene, questo può sembrare che abbiamo avuto qui, lo stiamo sovrascrivendo con la nostra implementazione individuale per il
‫nostro cane.
‫E ora facciamo la stessa cosa con il gioco, perché il cane vuole giocare solo se è felice, quindi supponiamo
‫che sia così.
‫Quindi qui, se guardiamo al gioco, dice che il cane sta giocando, ma non sono soddisfatto di questo risultato.
‫Diciamo che un cane giocherà solo se è un cane felice.
‫Quindi quello che possiamo fare è ignorare i giochi di parole e controllare se il cane è felice e solo allora giocare.
‫Quindi abbiamo già sovrascritto la funzionalità animale di base con la funzionalità.
‫Bene, con la nostra funzionalità per il cane o la nostra funzionalità unica per il cane in cui abbiamo aggiunto
‫una condizione.
‫Ma questo potrebbe essere qualsiasi cosa.
‫Non sei limitato a una condizione.
‫Questo potrebbe essere un tipo di implementazione completamente diverso.
‫Non hai nemmeno bisogno di usare il gioco di base, quindi sei totalmente libero di usare quello che vuoi.
‫Ad esempio, nel metodo make sound, puoi vedere che non stiamo usando base make sound perché, beh, nel
‫metodo make sound, non c'è nulla da chiamare.
‫Quindi non c'è niente di interessante qui.
‫Ma anche se ci fosse, non dobbiamo chiamare base pomiciata o base play.
‫Se vogliamo, potremmo implementare qualcosa di completamente diverso qui.
‫OK, allora quello sarà il nostro cane.
‫Ora andiamo avanti e salviamo queste due classi e lavoriamo con esse nel file CSS del nostro programma.
‫OK, quindi qui questo è prima di tutto, crea un cane in questo modo chiamerò il cane, che sarà
‫un nuovo cane.
‫Che avrà il nome di Siff e il cane avrà 50 anni, quindi cane piuttosto vecchio e adesso.
‫Possiamo scrivere qualcosa del genere in modo da poter accedere alla proprietà del cane in questo modo linea rossa, nome
‫del cane, così possiamo ottenere il nome del cane e l'età del cane usando cane, nome del cane e punto h.
‫E poi possiamo, per esempio, giocare e mangiare.
‫OK, facciamolo molto velocemente, gioco del cane, cane mangia.
‫Quindi eseguiamo questo.
‫E abbiamo potuto vedere cittadini di 15 anni, surfisti che giocano, surfisti che mangiano.
‫OK, quindi gioca e ha funzionato perfettamente.
‫Naturalmente, possiamo anche usare doctored.
‫E fai il suono.
‫Quindi questo farebbe suonare il cane.
‫Eseguiamo questo.
‫E vedi il titolo dice scatola.
‫Tutto bene.
‫Quindi ricapitoliamo rapidamente e vediamo come questo è diverso dall'esempio che abbiamo avuto nell'ultimo video, quindi abbiamo
‫la nostra classe base e la sua classe base ha un paio di proprietà e ha anche un paio di
‫metodi di funzioni, quindi parlare.
‫Quindi qui per far suonare, ad esempio, il metodo AED e così via, e
‫li rendiamo virtuali aggiungendo la parola chiave virtual in modo da renderli modificabili o sovraeccitabili nella classe ereditaria.
‫Quindi Dogs sta diseredando una classe o una sottoclasse, e questa sottoclasse ci permette ora di sovrascrivere un metodo specifico
‫dalla classe base usando la parola chiave override.
‫Così sarà ora.
‫Sostituisci la funzionalità in modo che sostituisca la funzionalità o il codice del metodo corrente, tranne che, ovviamente,
‫usi lo spazio che ciascuno.
‫Quindi ciò che farà è fondamentalmente chiamerà semplicemente il metodo eat della classe base, che significa del
‫genitore.
‫Ma sei libero di implementare il tuo codice qui.
‫Non devi chiamare la classe base.
‫Ovviamente è possibile aggiungere una condizione in modo che la funzionalità della classe base venga chiamata in una
‫condizione specifica.
‫Oppure puoi scrivere qualsiasi codice desideri all'interno dei tuoi metodi di sovrascrittura e poi qualcos'altro è
‫diverso.
‫Ed è che stiamo aggiungendo codice al nostro costruttore qui per il nostro.
‫Sottoclausola, OK, quindi questo cane di classe ereditaria.
‫Da un lato sta usando le stesse proprietà che sta usando la nostra classe base, ma allo stesso tempo ha
‫una propria implementazione, cosa dovrebbe succedere una volta creato un cane?
‫Quindi una volta creato un oggetto cane e nel nostro caso, è solo per dire che il cane sarà felice.
‫Va bene, questo è tutto per questo video, esamineremo molto di più l'ereditarietà, ovviamente, perché c'è
‫ancora molto da imparare.
‫Allora ci vediamo al prossimo video.