Prima tutti si sentivano bene con le tabelle dei metodi e una tabella dei metodi è fondamentalmente un'idea
o riferimenti a metodi di istanza che verranno utilizzati durante l'invocazione di metodi di istanza.
Non guardiamo un esempio che riguarda le tabelle dei metodi e nel processo impareranno anche qualcosa di
molto interessante per quanto riguarda le interfacce.
Consideriamo questa struttura di classe in cui una classe è un occhio e un'interfaccia è una sottoclasse di A.
Bene CS è una classe di entrambi io e lui definisce due metodi un metodo statico chiamato metodo statico
e un'istanza madre foo indiv è la barra del metodo dichiarata.
La classe B definisce anche un altro metodo statico con lo stesso nome della superclasse e definisce
anche che un metodo di istanza non ha quasi due metodi.
Uno è chi sostituisce la classe foin.
Il secondo metodo è bar che è semplicemente un'implementazione del metodo dell'interfaccia.
Si noti che questa classe X ha il metodo che ha solo un parametro che è un nome nella
prima istruzione.
Il metodo per è in lavorazione sul riferimento prezioso.
Ma sappiamo che l'oggetto reale o la variabile a cui fa riferimento non è noto fino al runtime in quanto
un metodo può essere coinvolto con un'istanza di A o B o C così finché il runtime di Videoland non si muoverà verso l'oceano della materia
scemo sarebbe al lavoro.
Quindi ovviamente la tabella Methot è necessaria per questo poiché verrà considerata durante il runtime potrebbe determinare il
metodo di destinazione da eseguire.
Quindi ecco le tre tabelle dei metodi nella parte superiore li abbiamo al tavolo per la lezione.
Dal momento che ci siamo incontrati, la tabella può essere implementata come una matrice.
Possiamo vedere i numeri di indice visualizzati accanto a loro in quella tabella.
L'elemento è fondamentalmente un puntatore al metodo attuale ma potrebbe inviare una tabella per 8.
L'elemento fa riferimento al codice del metodo corrispondente combattente foo in classe in.
Supponiamo che all'interno della tabella dei metodi di una classe JVM memorizzi sempre i riferimenti ai metodi della superclasse prima
dei riferimenti ai metodi nella sua stessa classe.
Inoltre, se un metodo è all'interno della stessa classe, riprendiamo il loro negozio in base all'ordine in
cui appaiono nella classe, quindi se si guarda alla classe B significa che il primo elemento fa riferimento al
metodo ereditato per la classe.
Il secondo elemento è una questione, non se non in quale classe il metodo è il primo elemento in quanto
è ancora sulla scrittura della metafora nella superclasse. Quindi il metodo di lavaggio dei mari foo occuperebbe la
posizione del suo metodo per l'intrattenimento.
Quindi dà ancora la precedenza anche se Bob appare prima di chi nella classe.
Il secondo elemento è il fondo che torna indietro o prima non importava se l'oggetto nel contesto è un'istanza
di Classe C, allora GBM guarderebbe al metodo C della tabella dei metodi che srotolava il metodo C a cui si
fa riferimento nelle posizioni miste in cui conosci l'interessante La cosa qui è che Gibeon non deve eseguire
alcuna ricerca nella tabella mater per eseguire questa invocazione per qualsiasi dichiarazione di cibo per cani che l'attrazione costante di runtime
della classe X avrà un riferimento diretto a un numero zero successivo nella tabella della materia.
No, non importa quale sia la tabella del metodo di destinazione.
Potrebbe appartenere agli oggetti o B o C il riferimento alla metafora è sempre noi nel prossimo 0.
Fa parte della materia che Damus a causa del tipo di riferimento è una classe come classe.
In questo esempio, il riferimento a un metodo che viene invocato verrà sempre archiviato nello stesso slot
della tabella degli argomenti.
Che si tratti di una tabella di argomenti di classe B o di uno dei suoi sottoprocessi.
In altre parole, è a causa della regola che abbiamo discusso in precedenza dove per una data classe GBM memorizza sempre
i riferimenti ai metodi della superclasse prima di un metodo per esempio nella sua classe.
A causa di questo riferimento a chi si trova nell'indice 0 in entrambi i processi secondari B e C, lo stesso non si applica se
il tipo di riferimento è un'interfaccia anziché una classe.
Quindi diamo un'occhiata a questo.
Consideriamo lo scenario.
Quando la classe A è in realtà un'interfaccia, ecco cosa siamo stati tutti gli strumenti.
Metodo foo che appare prima del metodo Norf nel classificatore e lo stesso si riflette nel
metodo ma della classe B che foo appare prima del Nord.
Nulla è cambiato con GLASSIE ma la tabella dei metodi è cambiata.
Sappiamo come la barra appare in posizione zero.
E questo perché il metodo, ma prima della métropole nella classe, non mostra che entrambi i metodi
e la classe C sono metodi di implementazione dichiarati in due interfacce diverse, ora la ragazza metodo vich ora
ha un'interfaccia come tipo di riferimento per il parametro matter.
Quindi la prima istruzione non può più avere un riferimento a uno slot fisso nel daemon del metodo e ha incontrato
la tabella per i riferimenti.
E poi 0 mentre è in CS a tavola lo è.
Nel prossimo.
Questo è principalmente dovuto al fatto che il tipo di riferimento è un'interfaccia e il metodo Invoke può apparire ovunque
nella sorpresa della fine di è.
Quindi JVM dovrà effettivamente servirli alla tabella dell'oggetto per trovare il metodo di destinazione da invocare a causa
di questo invocando un metodo attraverso un'interfaccia come riferimento può essere leggermente più lento rispetto a se
il riferimento è una classe.
Quindi questo è un fatto interessante.
Ma penso che la lentezza sarebbe minima.
E non c'è qualcosa di cui preoccuparsi.
Quindi dovremmo limitarci a ciò che impariamo da Java efficace.
Siamo uno degli elementi che fanno riferimento agli oggetti in base alle loro interfacce, non alla seconda istruzione
e il metodo go fa riferimento al metodo statico.
Per questo non abbiamo bisogno di una tabella master un metodo statico tatticamente osso che sia al momento della compilazione stesso.
Sappiamo dove si trova il metodo.
E così la costante costante di runtime avrebbe un riferimento diretto a un metodo statico in classe.
Quindi non importa quale oggetto è passato a una questione.
In pratica, limitare le loro tabelle in potrebbe solo per esempio fare i metodi di istanza anche se solo le classi concrete
hanno incontrato le loro tabelle.
Anche le classi astratte non hanno alle loro tabelle in quanto non possono essere istanziate Quindi attraverso questo semplice
esempio abbiamo visto come la struttura della tabella dei materiali.
E abbiamo visto come Metulla in quello che succede quando il tipo della variabile di riferimento è una
classe o un'interfaccia e questo è quanto.
Grazie.