‫Bentornato e questo video, tratteremo le classi astratte e quindi creeremo un sacco di nuove classi, ed
‫è importante che tu capisca il concetto di classi e anche l'ereditarietà e il polimorfismo,
‫perché ci baseremo su questo .
‫E ciò con cui iniziamo è creare una nuova classe.
‫Quindi creiamo una nuova classe qui.
‫Andiamo al progetto in classe e io creerò una classe di forma e quella sarà la forma.
‫Ora, l'idea è che vogliamo creare una classe di cui non vogliamo creare alcun oggetto.
‫Quindi non vorremmo creare un'istanza di forme.
‫Vogliamo istanziare oggetti che sono tipi di forme ma non forme stesse.
‫Quindi, ad esempio, una forma sarebbe un cubo o una forma sarebbe una sfera.
‫E sto usando forme 3D qui.
‫Destra.
‫Forme tridimensionali.
‫E bene, creeremo classi che erediteranno dalla forma.
‫Ma vogliamo assicurarci che la forma sia una vera classe astratta, il che significa che
‫non saremo in grado di crearne un oggetto, ma useremo i suoi sistemi oi suoi metodi e le sue proprietà.
‫Quindi iniziamo.
‫Rendiamo questa forma astratta, prima di tutto.
‫E per farlo, possiamo usare la parola chiave abstract.
‫Quindi ora è una classe astratta.
‫Ora, andiamo avanti al nostro programma, quel caso, e vediamo che è una vera classe astratta,
‫quindi creiamo una forma una forma uguale a una nuova forma.
‫Quindi, quando proviamo a farlo, puoi vedere che non è possibile creare un'istanza di una classe astratta o una forma di
‫interfaccia.
‫E poiché la nostra forma è una classe astratta, non possiamo crearne oggetti.
‫Quindi non possiamo istanziarlo.
‫Questo è un aspetto importante qui.
‫Va bene.
‫Avremo bisogno di una squadra adeguata.
‫E creerò solo questa proprietà chiamata name.
‫Quindi la forma ha bisogno di un nome e abbiamo un centro garantito per crearla.
‫Sto solo usando prop e quindi doppio tap per creare una nuova proprietà.
‫OK, l'abbiamo visto nei video.
‫Ora voglio avere un metodo e il metodo che voglio usare sarà un metodo virtuale, virtual void.
‫Ottenere informazioni.
‫Questa tastiera virtuale che vedete qui serve per modificare un indice di proprietà del metodo o un evento
‫dichiarato nella classe base e permette di essere sovrascritto nella classe derivata.
‫Quindi questo ci consente di sovrascrivere il metodo get infl in una classe guida.
‫Va bene.
‫Quindi questa è l'idea alla base di questa tastiera virtuale qui.
‫Quindi aggiungiamo solo una dichiarazione qui, quindi per ottenere il controllo sulla riga giusta e qui, voglio solo
‫scrivere qualcosa del genere.
‫Questo è un e quindi il nome della forma.
‫OK, quindi questo è un nome.
‫E ora l'idea dietro questo è che voglio avere una nuova linea e poi voglio avere la dichiarazione.
‫Questo è un e poi il nome della forma, perché ogni volta che creiamo una forma, possiamo impostarne il
‫nome.
‫Quindi ora abbiamo un vuoto virtuale.
‫Ora possiamo anche aggiungere un metodo astratto.
‫Ora facciamo quel doppio volume astratto.
‫Quindi quello che voglio calcolare è il volume di una forma.
‫Ora qui non implementerò questo metodo.
‫Questa è una distinzione importante qui.
‫Non ho intenzione di implementarlo qui.
‫Dirò solo, OK, ogni volta che una classe vuole ereditare da me, deve implementare una funzionalità
‫per il metodo volume.
‫Va bene.
‫Ora, potremmo, ovviamente, chiamarlo questo, calcolare il volume di cose del genere.
‫Ma lo chiamerò solo un volume.
‫Va bene.
‫Quindi, ora che abbiamo preparato la nostra classe di forma, possiamo salvarla e possiamo creare una nuova classe.
‫Quindi la prossima classe che creerò è la classe cubo.
‫Quindi creerò solo un cubo, che è una forma 3D.
‫Quindi ora il mio cubo erediterà dalla forma.
‫Ora, se lo faccio, puoi vedere che ottengo un errore qui e dice che Cube non implementa numeri
‫astratti ereditati, modella quel volume.
‫Quindi mostra che le potenziali correzioni sono giuste.
‫Implementare la classe astratta.
‫Se lo faccio, puoi vedere che implementa questo metodo del volume con un'istruzione di override.
‫Quindi dice che ha la precedenza su qualunque cosa fosse definita in forma e come forma come una classe astratta.
‫E questo metodo è astratto.
‫Come puoi vedere, non esiste un metodo, amico.
‫In realtà è solo la dichiarazione del metodo.
‫Quindi ora possiamo andare avanti e, naturalmente, implementare qualcosa.
‫Puoi vedere che qui viene generato un errore, non un'eccezione implementata.
‫Ovviamente vogliamo implementare qualcosa qui.
‫Quindi implementiamo un calcolo del volume nella nostra classe cubo.
‫Ora, per calcolarlo, ciò di cui abbiamo bisogno è una proprietà che sarà una lunghezza.
‫Quindi creerò qui questa nuova proprietà chiamata length.
‫E aggiungerò anche un costruttore.
‫Quindi Kube pubblico.
‫E ogni volta che voglio creare un cubo, devo passare una lunghezza.
‫Quindi è quello che sto dicendo qui.
‫E già che ci sono, aggiungerò anche un nome.
‫Quindi, come puoi vedere, stiamo usando l'ereditarietà qui perché il nome non è definito a Cuba.
‫È definito nella forma.
‫OK, quindi posso semplicemente impostare il nome della variabile qui e imposterò la lunghezza alla lunghezza che mi è
‫stata passata.
‫Quindi la lunghezza della proprietà sarà la stessa lunghezza della lunghezza che viene passata una volta creato un oggetto di
‫tipo.
‫D Quindi questa è l'idea alla base di questa variabile.
‫E poi possiamo implementare questo metodo del volume e possiamo semplicemente restituire qualcosa.
‫Quindi deve restituire un doppio.
‫Destra.
‫Quindi dobbiamo restituire qualcosa che si basa sul doppio e per calcolare il volume di un cubo e con la presente sto
‫usando un cubo che ha la stessa lunghezza su tutti i lati.
‫Quindi dirò solo lunghezza alla potenza di tre.
‫Quindi Magpul lunghezza tre, questo significa che calcolerà lunghezza, tempi, lunghezza, volte lunghezza.
‫OK.
‫Quindi questo è quello che sarà il nostro volume e restituirà questo valore.
‫Ora possiamo andare avanti e possiamo anche implementare questo metodo chiamato get info.
‫Quindi quello che farò è semplicemente copiarlo e ora non userò la parola chiave virtuale, ma sovrascriverò
‫la parola chiave perché voglio sovrascrivere per ottenere il metodo delle informazioni dal mio genitore.
‫Ora, qui, se lo faccio, quello che posso fare è anche chiamare ottengono informazioni dalla mia classe base, il che significa
‫che in questo caso chiamerà anche ottenere informazioni dalla forma che dice, OK, quindi sarà chiama questo
‫metodo qui.
‫Quindi significa che eseguirà questo codice e quindi eseguirà qualsiasi codice che aggiungiamo in fondo.
‫Quindi aggiungerò un piccolo testo qui e dirà che il cubo ha una lunghezza di e quindi passerò la
‫lunghezza qui.
‫Quindi la lunghezza, ovviamente, potrei anche calcolare il volume qui, ma lo lascerò a te.
‫Quindi, se vuoi farlo, sentiti libero.
‫Va bene.
‫Quindi questo è come possiamo.
‫Vai avanti e crea una classe che erediterà da un'altra classe astratta.
‫Ora, come piccola sfida per te, e metterò in pausa il video una volta, dovresti iniziare
‫con una sfida.
‫Quindi l'idea è ora creare un'altra forma, che è dove nella nostra classe, che sta ereditando dalla forma e la
‫forma dovrebbe essere una sfera, ora implementa lo stesso tipo di funzionalità che puoi vedere qui
‫per Sfera.
‫Va bene.
‫Buona fortuna.
‫Posta il video e prova a farlo.
‫Va bene.
‫Quindi spero che tu l'abbia provato.
‫Creerò una nuova classe qui e chiamerò questa sfera di classe così.
‫Sì.
‫E questa classe dovrebbe ereditare dalla forma.
‫E, naturalmente, ho bisogno di implementare la mia classe astratta, il che significa che ho bisogno di implementare
‫questo metodo del volume ora qui, posso, ovviamente, calcolare di nuovo dove avere una proprietà.
‫Ma questa volta una proprietà utile non sarebbe la lunghezza, ma sarebbe in realtà il raggio perché calcoliamo il
‫volume in modo diverso in una sfera che in un cubo.
‫E non l'abbiamo fatto in forma perché una forma da sola non può avere un volume.
‫Destra.
‫Se non è definita come una guerra, non possiamo calcolarne il volume, diciamo, perché non sappiamo di che
‫forma sia.
‫Destra.
‫Ecco perché abbiamo bisogno di quelle clausole che ereditano dalla forma e che implementano la funzionalità.
‫Quindi ora posso andare avanti e creare un costruttore, una sfera pubblica e un doppio raggio.
‫Quindi abbiamo bisogno di un raggio e quindi possiamo andare avanti e impostare il nome della sfera, che dovrebbe
‫essere sfera, e dovremmo avere un valore di proprietà del raggio.
‫Quindi assegniamo il raggio che ci viene passato poiché la proprietà raggio ha valore.
‫Va bene.
‫Ora che ce l'abbiamo, possiamo calcolare il volume.
‫Quindi ora, invece di lanciare un'eccezione qui, voglio calcolare il volume della mia sfera.
‫E per farlo, ho bisogno di PI e ho bisogno del seguente calcolo.
‫Quindi matematica che il raggio di Powell alla potenza tre e tutto questo moltiplicato per tre diviso per o per quattro diviso
‫per tre.
‫Va bene.
‫Quindi è così che calcoliamo il volume e ora possiamo andare avanti e anche implementare per ottenere il metodo Infl.
‫Quindi lo copierò in quattro dal mio cubo e sarò pigro.
‫E quindi copia questa parte qui e implementa la stessa cosa.
‫Quindi abbiamo usato per sovrascrivere di nuovo la parola chiave.
‫È esattamente lo stesso nome che aveva nella classe di forma.
‫E usiamo le informazioni di Baskette qui per chiamare qualunque fosse il metodo qui.
‫Quindi qualunque fosse il corpo del metodo lì dentro.
‫E poi invece di passare la lunghezza o dire qualcosa sulla lunghezza, diremo qualcosa
‫sul raggio e sul cubo.
‫In questo caso, la sfera ha un raggio di raggio.
‫Va bene.
‫Ora che abbiamo tutto ciò, quello che possiamo fare è andare avanti e creare oggetti di tutte
‫quelle classi diverse.
‫Quindi non ho intenzione di salutare il mondo qui.
‫Invece, creerò un mucchio di forme.
‫Quindi dirò, OK, per favore dammi una serie di forme e sarà una nuova sfera con un raggio di quattro e
‫un nuovo cubo con un raggio di tre.
‫E in questo caso, in realtà, è la lunghezza di tre perché Cube non ha un raggio, ha una
‫lunghezza.
‫E poi voglio eseguire qualcosa per ciascuna delle forme finora, forma in forme.
‫Voglio.
‫Esaminali tutti e questo caso, solo loro due.
‫Ma quello che voglio avere sono informazioni modellate.
‫Quindi ottenere informazioni dovrebbe essere chiamato.
‫E voglio scrivere qualcosa del genere.
‫E in questo caso zero.
‫Sarà il nome e poi voglio mostrare il volume, quindi voglio avere il nome ha un volume di.
‫E poi, ovviamente, voglio conoscere il volume di questo pezzo che stiamo guardando, quindi
‫modella quel nome e modella quel volume.
‫OK, quindi qui è importante chiamare il metodo del volume, giusto?
‫Non è solo un.
‫Proprietà, quindi abbiamo il controllo, Red Line ha un volume di in questo caso, nome ha un volume di volume,
‫quindi calcolerà solo il volume.
‫OK, quindi ora proviamo questo.
‫Vediamo cosa sta succedendo qui.
‫Quello che abbiamo creato e che siamo, quindi qui abbiamo una linea vuota, vuota.
‫Poi dice che questa è una sfera.
‫La sfera ha raggio quattro.
‫La sfera ha un volume di duecentosessantotto virgola zero otto.
‫E poi questo è un cubo.
‫Questo Kupers, una lunghezza di tre a Cube ha un volume di ventisette.
‫Va bene.
‫Quindi puoi vedere che questo è un codice molto semplice che abbiamo scritto qui, ma già spiega o mostra la maggior parte
‫delle funzionalità che dobbiamo sapere sulle classi astratte.
‫Ora, la cosa bella è che possiamo anche usare altre parole chiave che non abbiamo ancora usato.
‫E poiché questo video sta diventando abbastanza lungo, direi che lo faremo nel prossimo video.
‫Quindi ci vediamo lì.