Salve, va bene.
E bentornato.
Dall'8 luglio in poi ci occuperemo di argomenti caldi e interfacce e abbiamo già visto come le
interfacce possono avere metodi predefiniti.
Vediamo quali vantaggi otteniamo rendendo parte dei metodi statici le interfacce per capire perché le interfacce non hanno come
i metodi statici prima di Java 8 come interfacce di libri e i metodi statici non stateless.
Questa è una domanda importante che dobbiamo porre per una buona ragione perché le
interfacce sono specifiche astratte.
Questo è il definire solo i contratti.
Quindi, anche i metodi statici sembrano essere contrari.
Messo fuori dalle interfacce un metodo statico includerebbe l'implementazione.
Sotto contratto non significa implementazione ma le interfacce possono essere associate ai metodi di utilità e sappiamo che i
metodi statici.
Quindi, come si limiterà, per esempio, potremmo avere una chiamata al metodo e copie che prenderanno
due parametri.
Uno è e quello è un numero intero e l'altro è un elemento che è una specie di oggetto e
non dobbiamo preoccuparci del tipo dell'oggetto.
A questo proposito si restituirebbe un'implementazione di lista a meno che, come menzionato in
una lezione precedente, un'interfaccia dal pacchetto util Javadoc sotto scritto per ultimo includesse e copie dell'elemento dato come suggerisce il
nome del metodo.
OK così se e Wall Street.
La lista di ritorno includerebbe tre copie dell'elemento umano.
Quindi questo è un metodo di utilità su questo associato a un elenco di interfacce poiché sta eseguendo una delle sue implementazioni.
Per adattare tali metodi di utilità la convenzione del brevetto è di fornire una classe di utilità compagna
con l'interfaccia sulla classe Collections dal pacchetto Gelada è un esempio di tale classe di raccolte La classe Collections è
stata anche brevemente discussa in precedenza quando si discute prima che importi sotto e metodo di
cui abbiamo appena parlato è in realtà un Materne statico nella classe Collections questa classe
Collections è una classe companion per un'interfaccia denominata collection che è singolare.
Collezione singolare che è una delle principali interfacce in Java.
Pacchetto Udal nella lista e questa è in realtà l'interfaccia secondaria dell'interfaccia di raccolta.
Della classe delle raccolte comprende due tipi di metodi.
I primi sono metodi di tipo algoritmico e questi metodi hanno un'interfaccia come un tipo di parametro
del metodo, oltre ad alcuni algoritmi sugli oggetti che vengono passati in quel parametro.
Ecco alcuni esempi.
Unbe ha già esaminato il metodo saut che ha l'interfaccia di lista come un tipo di parametro
metodo undercharge gli elementi nell'oggetto lista di input.
Il secondo metodo mescolerebbe gli elementi dell'elenco e ne abbiamo discusso brevemente
in una lezione precedente e il terzo avrebbe semplicemente invertito gli elementi nell'elenco di input; questi metodi avrebbero
funzionato bene come metodi predefiniti se fossero stati eseguiti nell'interfaccia appropriata corrispondente all'input .
Ma io sono Akercocke come spostare il metodo soft come una questione diversa nell'interfaccia elenco.
Come abbiamo visto nella precedente struttura di Duckery, questi metodi predefiniti possono essere richiamati direttamente
sull'oggetto stesso.
Quindi, nel caso del metodo calzino, può essere invocato sull'oggetto lista stesso.
Il secondo tipo di metodi nella classe delle collezioni rappresenta madri di fabbrica che costruiscono oggetti di un certo
tipo di interfaccia che è indicato da loro che la sporcizia è ritratta.
Lo facciamo solo perché il primo esempio qui.
E non preoccupiamoci degli altri due.
E questi metodi non possono essere usati solo con metodi diversi in quanto non ci sono oggetti sui quali possono essere impiegati.
Sono semplicemente metodi di fabbrica.
E questo funzionerebbe molto bene.
Metodi isotopici se sono più dell'interfaccia corrispondente al materiale che puoi pagare.
In questo caso, il metodo capias può essere spostato nell'interfaccia dell'elenco che è dimmer.
Per di qua.
Le reti di utilità specifiche per la scheda di interfaccia livellano l'interfaccia stessa anziché in una
classe complementare come la classe della raccolta.
Quindi i progettisti di linguaggio sembrano averlo capito e stavano bene, ma in entrambi i casi hanno metodi statici a causa di
questo McKinnell su come i metodi e le interfacce statici.
Quindi non piaceva a quell'indigente maleducato in classe che lamenta argomenti che sono molto specifici in una classe più grande.
Quindi penso di andare avanti.
Possibile e incontrare le classi di accompagnatori molto o meno come la maggior parte delle questioni di utilità
non possono essere parte e diffondere come metodi imperfetti o statici.
E si noti inoltre che metodi diversi in un'interfaccia possono richiamare metodi statici nella stessa interfaccia.
Si noti che, come nel caso dell'interfaccia modello di default, l'evoluzione continuerà a essere valida se si aggiungono
solo metodi statici a un'interfaccia esistente.
Ad esempio un'interfaccia di funzione rimarrà un'interfaccia funzionale anche se i metodi statici sono adeguati.
In una lezione precedente abbiamo visto come l'interfaccia funzionale è rimasta come interfaccia di funzione.
Dopo averlo scritto prima della materia.
In questo modo funzionerebbe se al posto del metodo predefinito definissimo questo metodo statico.
Ma il vantaggio principale di avere metodi e interfacce statici sembra essere quello che ho visto prima.
I metodi di utilità dell'argomento possono convivere con l'interfaccia stessa e avviarsi in una classe companion separata.
Questo sembra essere il principale vantaggio, infine, esaminiamo alcune proprietà specifiche associate ai
motostatici statici definiti nelle interfacce.
Uno è ovvio che dobbiamo usare un modificatore tattico nella dichiarazione del metodo.
La seconda proprietà è che, a differenza dei metodi statici e delle classi, i metodi statici e le interfacce non
sono ereditati secondo Braungart.
Ecco uno dei designer di linguaggio Java.
Sembra che l'ereditarietà di metodi e classi statici sia di per sé un bug di
progettazione e dopo un'attenta considerazione sembra che non volessero estenderlo alle interfacce soprattutto considerando che le
superinterfacce e quanto identici sono i mercati statici quindi Shardik che non sono ereditati definitivamente dai metodi statici e le
interfacce possono essere richiamate solo tramite il nome dell'interfaccia.
Questo non può essere invocato usando un riferimento a un oggetto.
Sappiamo che gli interessi non possono essere istanziati e che anche i metodi sintattici nelle interfacce non possono essere ereditati.
Non possiamo neanche usare un'istanza di un sottotipo delle voci in quel metodo.
Quindi deve essere interfacciato e ricordare che ho iniziato la mia ricerca che fa parte delle classi in cui ci
si può trovare attraverso le istanze di quelle classi anche se non è consigliabile interromperla o farlo.
Quindi, come puoi vedere, ci sono alcune proprietà uniche associate ai metodi statici definiti nel mondo degli affari.
Non andiamo duro e guardiamo una rapida demo di metodi statici e li usiamo tutti.
Estenderemo il codice dalla demo precedente.
Quindi qui stiamo esaminando l'interfaccia C che conosciamo come l'interfaccia di eccellenza.
E ho appena introdotto un metodo statico che è anche chiamato come metodo statico.
OK.
E come puoi vedere abbiamo il modificatore statico qui e il solito messaggio di stampa che dice
che siamo all'interno dell'interfaccia.
E dentro il metodo statico.
Ora andiamo a testare e testare.
Quindi qui stiamo creando un'istanza di X X è la classe concreta che conosciamo e C è il
tipo di riferimento e stiamo invocando il metodo statico.
Perché sono il tipo di riferimento.
E questo non è possibile.
Come menzionato prima.
Quindi andiamo avanti e compiliamo questa
immagine per vedere la chiamata al metodo di interfaccia statica illegale.
Quindi l'espressione del destinatario dovrebbe essere sostituita con il qualificatore di tipo C ..
Quindi abbiamo bisogno di qualificarlo come letto il nome dell'interfaccia e facciamo solo questo e questo dovrebbe funzionare.
Noi gestiamo questo.
Quindi sta stampando il messaggio.
E abbiamo anche detto che i metodi statici non possono essere ereditati.
Così.
Così ho fatto questo metodo chiamato ereditarietà solo nella classe concreta X.
OK.
Ecco il test di ereditarietà.
Ed ecco questa tattica Muhtar Quindi stiamo solo cercando di invocare il metodo statico e questo non
dovrebbe funzionare perché non è possibile ereditare le questioni statiche.
Quindi fammi compilare questo.
E dice che non è possibile trovare i simboli della materia statica, il che significa che è invisibile qui,
prima di essere rivelato, ma andare è un metodo predefinito e può essere consultato direttamente.
È definito nell'interfaccia C nell'ultima ora circa.
Ma qui ho appena aggiunto una dichiarazione.
Sta invocando il metodo statico.
Quindi, il metodo predefinito che chiamiamo chiamiamo i metodi statici, il metodo statico è come un metodo di
supporto.
OK.
Quindi supponiamo che la questione stia usando il metodo di utilità che è il metodo statico.
OK, compiliamo e gestiamo semplicemente questo.
Quindi qui discutiamo la questione che Goya sta entrando in lavoro da qui.
Quindi, perché la materia passa, che è un metodo predefinito, viene ereditata e sta entrando in gioco e viene
fatto invocare il metodo statico.
E quindi stiamo vedendo i due messaggi e questo è tutto su di loro.
Fammi aprire rapidamente anche il nostro cane.
Sono sicuro che tu sia una delle interfacce.
Si chiama interfaccia concorrente che proviene dal punto Java.
Si fa il pacchetto su ci troviamo all'interno del documento Java 8.
OK, questa interfaccia di confronto la vedremo nel capitolo quadro delle collezioni, ma eccola qui.
Come si può vedere il dollaro si avvicina leggermente in quanto ha Papps e ha alcuni metodi statici
qui.
Puoi vedere il modificatore statico.
E come al solito ha anche alcuni metodi astratti.
Così Sadik my è quello che ho fatto di recente con Java 8 e questa mappa mostra solo metodi diversi.
OK ci sono diversi metodi in alto mostra solo diversi metodi che sono
stati aggiunti in questa interfaccia un metodo di istanza è fondamentalmente un'unione di entrambi i metodi astratti e di default.
Quindi non include i metodi statici di certi gruppi, ma i metodi astratti così come i metodi predefiniti, mentre le questioni
astratte potrebbero solo astrarre se è sul lato anteriore potrebbe solo prima che sia importante.
Quindi volevo solo mostrare questa differenza nel documento Java.
E se sostituisci questo otto con sette, allora vedi la vecchia interfaccia utente o i documenti.
Quindi questo è dal drama 7 doc e come puoi vedere ci sono solo due metodi astratti.
Quindi con John 8 sai sia prima che i metodi statici cosa ho fatto.
E così anche il documento API sembra diverso.
Quindi questo riguarda i metodi statici.
Walter.