Ciao.
Questo non voleva non guardare semplicemente un'altra caratteristica importante di una classe chiamata
costruttore, che è legata alla costruzione di oggetti e all'inizializzazione di nidificazione.
Viene alla corte che balli quando crei un oggetto e viene principalmente utilizzato per
inizializzare lo stato dell'oggetto che inizializza le variabili di istanza dell'oggetto.
Ancora una volta considera questo esempio familiare che crea il suo oggetto studente.
E sappiamo che questa affermazione ha tre parti in essa.
E ognuno di loro nella parte anteriore del DBM, diamo un'occhiata a queste tre parti, ancora una volta gli studenti del fusspot
fanno in modo che GBM guardi lo spazio per la variabile di riferimento, quindi il nuovo studente del parco dice a JVM di guardare lo spazio per
un nuovo oggetto studente nella memoria.
Infine l'operatore di assegnazione assegna l'indirizzo dell'oggetto studente con la variabile S e despoticamente o il
frammento nel secondo passo è in realtà un'invocazione del costruttore.
Il secondo passo crea innanzitutto un oggetto nella memoria, quindi richiama il costruttore per inizializzare lo
stato dell'oggetto e quindi restituisce l'indirizzo dell'oggetto creato.
Unhorsed non ha un ductless costruttore.
Deve avere lo stesso nome della classe sulla sintassi wise.
Sembra molto simile a un metodo come metodo.
Può facoltativamente avere parametri.
Tuttavia la differenza principale è che non ha ragione.
Come metodo, anche un costruttore può averlo.
Il barometro dei blocchi qui è una definizione di classe di esempio che il costruttore può vedere come il
costruttore abbia lo stesso nome della classe che inizializza.
È necessario un nuovo valore che viene passato come argomento al costruttore.
Quindi in pratica lo stato dell'oggetto viene inizializzato nel costruttore.
Ed ecco un'invocazione che crea un oggetto studente inizializzato con un valore ID di
chiusura e Nunda sa se non si fornisce un costruttore nella nostra classe, quindi al completamento il
compilatore lo inserisce automaticamente come costruttore predefinito e il costruttore predefinito non ha alcun barometro da allora non
ha alcun parametro
Il costruttore predefinito viene anche definito costruttore di archi Enno.
Si noti che ciò avverrebbe solo se la definizione della classe non include un costruttore.
Se la classe include un costruttore, il compilatore non inserirà un costruttore innocuo, questo sarà il
pezzo anche se il constrictor incluso ha uno o più parametri.
Ed ecco un esempio con la definizione della classe non ha quel costruttore.
Quindi, quando decompilatore di questa classe il compilatore lo inserisce, distrugge il costruttore nel bytecode Java.
Il che significa che possiamo creare un oggetto invocando il costruttore di Norks e questo esempio
mostra che se viene fornito almeno un costruttore, il compilatore non inserirà un costruttore predefinito.
Quindi qui possiamo invocare il costruttore ma non possiamo creare un oggetto richiamando il costruttore di Norks.
OK ci darebbe un compilatore e se vogliamo farlo allora dovresti aggiungere
manualmente il costruttore.
Quindi in pratica il compilatore non ne inserirà uno per il prossimo concetto o sovraccarico, proprio come i
costruttori di metodi possono anche essere caricati.
In effetti solo avere più di un costruttore nella stessa classe implica che siano già sovraccaricati.
E questo perché i costruttori possono avere un solo nome, che è il costruttore della classe, e hanno
le stesse regole di overload dei metodi.
Quello è un elenco di parametri che deve essere diverso con i metodi che devono essere visti anche i nomi dei metodi.
E questo non sarebbe un problema con i costruttori perché i costruttori avranno
lo stesso nome del nome della classe.
Gli oggetti possono essere creati usando uno qualsiasi dei costruttori sovraccaricati.
Ecco la cosa principale.
La domanda è perché abbiamo bisogno di costruttori sovraccarichi.
E una buona ragione è creare oggetti con capacità diverse.
Vediamo un esempio su questo come dalla stessa libreria Java.
Questo è da una classe chiamata Less file output stream che discuteremo più avanti
nel capitolo dell'output input, ma questa classe è utile per scrivere grandi file di dati sul disco.
Quindi se hai dei dati devi scrivere i dati su un particolare file sul disco, allora puoi
usare questa classe.
E come puoi vedere questa classe ha questi cinque costruttori e consideriamo solo i
primi due costruttori sovraccaricati.
Quindi abbiamo una multa su vogliamo semplicemente un nuovo contenuto con un file.
Quindi possiamo lavorare sul primo costruttore passando il nome del file per il primo parametro e
passandolo attraverso il secondo append del parametro che indica che vogliamo aggiungere dati.
Ma se vogliamo sovrascrivere il contenuto del file esistente, invece di invocare il primo
costruttore e passare un valore falso, possiamo semplicemente invocare il secondo costruttore che, per impostazione
predefinita, sostituisce per trovare.
Quindi creiamo un oggetto del flusso di output del file usando il costruttore se vogliamo fare obiezioni per aggiungere contenuto
al roofline.
OK, questa è la capacità che otteniamo invocando il primo costruttore.
Altrimenti chiave e l'oggetto che utilizza il secondo costruttore.
Quindi è una combinazione di capacità e convenienza.
Ecco un altro esempio qui su come il processo utente con tre nomi ID nome e salario.
E abbiamo anche due costruttori.
Il primo costruttore inizializza il nome IAB mentre il secondo inizializza tutte e tre le cose.
Non auto abbiamo due tipi di utenti: uno studente e un istruttore su entrambi hanno schermi
di registrazione diversi.
Supponiamo che lo schermo di registrazione degli studenti non richieda informazioni sul salario.
Quale schermata di registrazione dello spogliarellista richiede informazioni sullo stipendio.
Ora sento che uno studente di nome Giovanni si registra, quindi possiamo creare un oggetto utente invocando
il primo costruttore in questo modo. Analogamente se supponiamo che un istruttore chiamato D2 registri, possiamo invocare il secondo costruttore,
dato che l'istruttore fornisce anche informazioni a Sandri. non è un ottimo esempio, ma è possibile
incontrare scenari simili nel mondo reale in cui è possibile utilizzare la stessa classe per creare
diversi tipi di oggetti.
Ora una cosa che possiamo vedere qui è che entrambi i costrittori come dichiarazioni identiche per inizializzare
l'idea che nome.
Quindi abbiamo qui un codice duplicato e dovremmo sforzarci di evitare sempre il codice duplicato un'istanza dopo
se decidiamo di rimuovere tutti i caratteri speciali in.
Quindi dobbiamo farlo in entrambi i costruttori e se ci dimentichiamo di farlo in uno dei costruttori, allora
potrebbe portare ad alcuni dati cattivi.
Quindi una cosa che possiamo fare è inizializzare ID e main solo nel costruttore
e nel primo costruttore dal secondo costruttore per inizializzare solo quelli senza trofei, ecco come possiamo farlo.
Usiamo qualcosa chiamato come questa dichiarazione di invocazione e comporta l'uso della parola chiave.
Questo è seguito da qualsiasi argomento richiesto dal costruttore sovraccaricato, quindi passiamo semplicemente l'id utente sul nome
utente come argomenti al primo costruttore.
Lo stipendio è inizializzato come è stato fatto in precedenza.
Quindi non si usa il nome del costruttore stesso per invocare il costruttore sovraccarico, ma deve essere
questo speciale nella dichiarazione di missione.
Ora questa dichiarazione di immigrazione deve essere il primo movimento nel costruttore.
Altrimenti otteniamo un compilatore e anche tu puoi come solo uno fa nell'istruzione location, ma next constructor non possiamo
usare una variabile di istanza come argomento in un this e faremo un'istruzione Kishan.
E la ragione di ciò è che una variabile di istanza non verrebbe inizializzata in questo particolare punto.
E quindi passare una variabile senza inizializzazione potrebbe portare ad errori.
E infine un costruttore non può di per sé usare questa dichiarazione di invocazione.
E se provassimo a fare questo avremmo un errore del compilatore e se fosse permesso, avremmo finito
con un loop infinito.
C'è un costruttore che invocherà continuamente se stesso in un ciclo senza fine.
Presto li rispolvereremo in una demo che faremo.
E qui c'è un esempio di una dichiarazione di missione ricorsiva in cui entrambi i costruttori stanno
cercando di invocare se stessi e questo non è valido e questo è un altro esempio di azione ricorsiva dell'operaio di costruzione a
differenza dell'esempio precedente qui.
Metti i costruttori a camminare l'un l'altro e questo anche i costruttori nonsense del compilatore Shaurya non hanno il
tipo di ritorno nella dichiarazione.
Non possono restituire alcun valore.
Tuttavia possono avere una dichiarazione scritta senza alcuna espressione scritta parola chiave seguita
da un punto e virgola qui come esempio.
Qui il controllo ritorna con una dichiarazione scritta sul codice sottostante la dichiarazione scritta è irraggiungibile e
quindi non è executer.
Ma penso che in pratica sarebbe piuttosto raro scrivere una tale affermazione scritta.
Ricorda che puoi anche avere una tale affermazione scritta nelle parole che sono state cancellate.
LLOYD Quindi questo è tutto.
E questa è un'introduzione al costruttore.
Quindi il cancro viene utilizzato fondamentalmente nel contesto della creazione di un oggetto ed è quasi sempre utilizzato per inizializzare
lo stato dell'oggetto.
Ricorda solo che ogni volta che stai pensando a un costruttore, significa che stai già pensando
a un oggetto e che non abbiamo ancora finito con i costruttori.
Li rivisiteremo di nuovo dopo aver trattato argomenti orientati agli oggetti come ereditarietà e polimorfismo.
Ma ora facciamo una demo molto rapida del sovraccarico del costruttore.
Ecco una classe utente che abbiamo visto in precedenza quando si parla di overloading del costruttore.
E questo era uno degli esempi che abbiamo usato.
È esattamente lo stesso codice.
Quindi abbiamo la classe utente con il nome ID di tre visualizzazioni sullo stipendio e abbiamo i due costruttori sovraccaricati.
Uno di questi sta inizializzando solo l'ID e intendo bene che il secondo sta inizializzando tutti gli ID precedenti
e quelli sullo stipendio.
E qui abbiamo il metodo principale e stiamo costruendo un'istanza off user e questo
sarebbe istruttore.
Quindi stiamo passando tutti e tre i valori qui.
Stiamo invocando il secondo nome utente id costruttore dell'istruttore e lo stipendio su questo costruttore viene eseguito
in Woking passare da un costruttore per inizializzare solo Id.
OK, quindi stiamo usando che questa istruzione vocazionale sulla variabile finale viene inizializzata direttamente
qui.
OK.
E stiamo semplicemente stampando il nome dall'istruttore.
OK per il solo fatto che sta funzionando.
Quindi questo è solo lo stesso esempio qui.
OK.
E testeremo principalmente tutte le altre cose riguardo a questa invocazione della missione.
Ci sono alcune cose che potrebbero essere coinvolte e le testeremo su questa classe è stata
scritta nella directory di base e la sua già compilata.
Quindi lasciami andare avanti e gestirlo.
Quindi, come puoi vedere, Princeton ha chiamato D2 qui.
OK, questo è il modo in cui l'istruttore ha capito che siamo passati.
Ora lascia andare avanti e abbiamo detto che questa affermazione deve essere l'intera affermazione.
Quindi lascia che sia il secondo.
Lasciami solo copiare qui.
Ora dovremmo ottenere un compilatore con un ok chiamato.
Questo deve essere falso dichiarazione e costruttore quindi Sonex quindi dovrebbe tornare.
E abbiamo anche detto a Witan un costruttore che non possiamo trattenere più di uno.
Questa affermazione in sede e avremo ancora una volta un undergrad errore di compilazione con lo stesso.
Quindi basta chiamare questa deve essere la dichiarazione nel costruttore.
In questo caso è la seconda linea 14.
Qui sono il 14 luglio.
Quindi questa è la riga 14, quindi possiamo farlo.
Questa deve essere la dichiarazione completa.
Questa è una cosa.
Ora abbiamo anche detto che un costruttore non ha ragione nei suoi cittadini.
Abbiamo ottenuto ricorsiva e posizione.
Quindi diciamo solo lo stipendio dell'utente.
Ora se facciamo questo concetto Gotcher sta cercando di invocare se stesso.
E questo darà anche un errore del compilatore.
Quindi dice chiaramente perché il costruttore non è possibile.
OK.
Dice che lo stiamo facendo e non dovremmo farlo.
Quindi questo è un esempio.
E il secondo esempio di ricorsiva e posizione era questo costrutto o invocando questo su
questo invocando questo.
Andiamo avanti e proviamo anche questo.
Quindi diciamo che è apparso qui.
Quindi questo è in questo su questo.
Invocheremo il primo e dovrebbe darci una raccolta di lei come puoi vedere dice che lo stipendio degli utenti mi
lascia passare.
Non c'è uso o salario qui.
Quindi Alexis passa zero OK.
Quindi, ancora una volta, accedi al suk record di Struktur a Brooklyn.
OK, fammi leggere tutto questo
Quindi penso che sia buono.
Tornare alla normalità.
Ora un'altra cosa che abbiamo detto come non possiamo passare una variabile di istanza qui.
Quindi diciamo in str. username diciamo che abbiamo un'altra variabile
definiamola qui, chiamiamola una stringa best mean perché vogliamo solo testarla.
OK, per non dire che vogliamo passare interviste o che vogliamo passare questo OK, abbiamo detto che non possiamo
passare una variabile di istanza come argomento perché l'oggetto non è ancora inizializzato.
Le variabili non sono ancora inizializzate.
Quindi possiamo farlo.
Quindi diamo il comando a questo in modo che non possa fare riferimento a quel nome prima che il costruttore supertype sia stato chiamato Can the super construct
che è un argomento diverso di cui parleremo in seguito.
Ma a questo puoi vedere che questo non può essere inizializzato e il supertipo è qualcosa relativo alla programmazione
orientata agli oggetti.
Quindi quando trattiamo quando arriviamo sapremo cosa fa.
Ma almeno devi essere consapevole che non possiamo farlo.
OK, quindi credo che sia tutto qui.
Quelle erano le diverse istanze delle istanze invitate e basta.
E quindi questa è solo un'intro da costruire.
E in un paio di conferenze forse faremo anche una demo molto buona che
includerà tutte le cose che abbiamo imparato durante la registrazione incluso il costruttore di Groote e anche un
altro almeno un argomento correlato di costrittori.
Quindi lo vedremo.
Quindi questo è tutto per ora.
Grazie.
Sono felice di programmare.