1
00:00:00,970 --> 00:00:07,930
Prima tutti si sentivano bene con le tabelle dei metodi e una tabella dei metodi è fondamentalmente un'idea

2
00:00:08,060 --> 00:00:14,130
o riferimenti a metodi di istanza che verranno utilizzati durante l'invocazione di metodi di istanza.

3
00:00:14,210 --> 00:00:19,640
Non guardiamo un esempio che riguarda le tabelle dei metodi e nel processo impareranno anche qualcosa di

4
00:00:19,640 --> 00:00:22,300
molto interessante per quanto riguarda le interfacce.

5
00:00:23,980 --> 00:00:30,760
Consideriamo questa struttura di classe in cui una classe è un occhio e un'interfaccia è una sottoclasse di A.

6
00:00:30,810 --> 00:00:38,960
Bene CS è una classe di entrambi io e lui definisce due metodi un metodo statico chiamato metodo statico

7
00:00:38,960 --> 00:00:43,810
e un'istanza madre foo indiv è la barra del metodo dichiarata.

8
00:00:44,080 --> 00:00:50,140
La classe B definisce anche un altro metodo statico con lo stesso nome della superclasse e definisce

9
00:00:50,140 --> 00:00:54,290
anche che un metodo di istanza non ha quasi due metodi.

10
00:00:54,310 --> 00:00:56,920
Uno è chi sostituisce la classe foin.

11
00:00:56,920 --> 00:01:03,910
Il secondo metodo è bar che è semplicemente un'implementazione del metodo dell'interfaccia.

12
00:01:03,970 --> 00:01:12,300
Si noti che questa classe X ha il metodo che ha solo un parametro che è un nome nella

13
00:01:12,300 --> 00:01:13,530
prima istruzione.

14
00:01:13,560 --> 00:01:16,420
Il metodo per è in lavorazione sul riferimento prezioso.

15
00:01:17,510 --> 00:01:23,510
Ma sappiamo che l'oggetto reale o la variabile a cui fa riferimento non è noto fino al runtime in quanto

16
00:01:23,690 --> 00:01:31,580
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

17
00:01:31,580 --> 00:01:33,080
scemo sarebbe al lavoro.

18
00:01:33,930 --> 00:01:39,540
Quindi ovviamente la tabella Methot è necessaria per questo poiché verrà considerata durante il runtime potrebbe determinare il

19
00:01:39,540 --> 00:01:41,470
metodo di destinazione da eseguire.

20
00:01:43,440 --> 00:01:48,520
Quindi ecco le tre tabelle dei metodi nella parte superiore li abbiamo al tavolo per la lezione.

21
00:01:49,460 --> 00:01:52,290
Dal momento che ci siamo incontrati, la tabella può essere implementata come una matrice.

22
00:01:52,340 --> 00:01:56,300
Possiamo vedere i numeri di indice visualizzati accanto a loro in quella tabella.

23
00:01:57,150 --> 00:02:03,480
L'elemento è fondamentalmente un puntatore al metodo attuale ma potrebbe inviare una tabella per 8.

24
00:02:03,500 --> 00:02:09,120
L'elemento fa riferimento al codice del metodo corrispondente combattente foo in classe in.

25
00:02:09,300 --> 00:02:16,110
Supponiamo che all'interno della tabella dei metodi di una classe JVM memorizzi sempre i riferimenti ai metodi della superclasse prima

26
00:02:16,530 --> 00:02:19,580
dei riferimenti ai metodi nella sua stessa classe.

27
00:02:20,370 --> 00:02:25,810
Inoltre, se un metodo è all'interno della stessa classe, riprendiamo il loro negozio in base all'ordine in

28
00:02:25,810 --> 00:02:32,130
cui appaiono nella classe, quindi se si guarda alla classe B significa che il primo elemento fa riferimento al

29
00:02:32,220 --> 00:02:34,100
metodo ereditato per la classe.

30
00:02:34,110 --> 00:02:42,000
Il secondo elemento è una questione, non se non in quale classe il metodo è il primo elemento in quanto

31
00:02:42,010 --> 00:02:49,200
è ancora sulla scrittura della metafora nella superclasse. Quindi il metodo di lavaggio dei mari foo occuperebbe la

32
00:02:49,240 --> 00:02:51,800
posizione del suo metodo per l'intrattenimento.

33
00:02:51,950 --> 00:02:57,010
Quindi dà ancora la precedenza anche se Bob appare prima di chi nella classe.

34
00:02:57,260 --> 00:03:04,190
Il secondo elemento è il fondo che torna indietro o prima non importava se l'oggetto nel contesto è un'istanza

35
00:03:04,190 --> 00:03:11,890
di Classe C, allora GBM guarderebbe al metodo C della tabella dei metodi che srotolava il metodo C a cui si

36
00:03:11,890 --> 00:03:18,400
fa riferimento nelle posizioni miste in cui conosci l'interessante La cosa qui è che Gibeon non deve eseguire

37
00:03:18,400 --> 00:03:25,970
alcuna ricerca nella tabella mater per eseguire questa invocazione per qualsiasi dichiarazione di cibo per cani che l'attrazione costante di runtime

38
00:03:25,990 --> 00:03:32,290
della classe X avrà un riferimento diretto a un numero zero successivo nella tabella della materia.

39
00:03:32,740 --> 00:03:35,620
No, non importa quale sia la tabella del metodo di destinazione.

40
00:03:35,870 --> 00:03:43,270
Potrebbe appartenere agli oggetti o B o C il riferimento alla metafora è sempre noi nel prossimo 0.

41
00:03:43,310 --> 00:03:49,420
Fa parte della materia che Damus a causa del tipo di riferimento è una classe come classe.

42
00:03:49,420 --> 00:03:55,810
In questo esempio, il riferimento a un metodo che viene invocato verrà sempre archiviato nello stesso slot

43
00:03:55,810 --> 00:03:57,490
della tabella degli argomenti.

44
00:03:57,490 --> 00:04:02,200
Che si tratti di una tabella di argomenti di classe B o di uno dei suoi sottoprocessi.

45
00:04:02,350 --> 00:04:09,270
In altre parole, è a causa della regola che abbiamo discusso in precedenza dove per una data classe GBM memorizza sempre

46
00:04:09,550 --> 00:04:14,780
i riferimenti ai metodi della superclasse prima di un metodo per esempio nella sua classe.

47
00:04:15,540 --> 00:04:23,330
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

48
00:04:23,330 --> 00:04:26,320
il tipo di riferimento è un'interfaccia anziché una classe.

49
00:04:26,660 --> 00:04:27,830
Quindi diamo un'occhiata a questo.

50
00:04:28,190 --> 00:04:29,500
Consideriamo lo scenario.

51
00:04:29,540 --> 00:04:37,380
Quando la classe A è in realtà un'interfaccia, ecco cosa siamo stati tutti gli strumenti.

52
00:04:37,380 --> 00:04:43,230
Metodo foo che appare prima del metodo Norf nel classificatore e lo stesso si riflette nel

53
00:04:43,350 --> 00:04:48,010
metodo ma della classe B che foo appare prima del Nord.

54
00:04:48,080 --> 00:04:52,460
Nulla è cambiato con GLASSIE ma la tabella dei metodi è cambiata.

55
00:04:52,460 --> 00:04:55,460
Sappiamo come la barra appare in posizione zero.

56
00:04:55,460 --> 00:05:02,030
E questo perché il metodo, ma prima della métropole nella classe, non mostra che entrambi i metodi

57
00:05:02,030 --> 00:05:08,950
e la classe C sono metodi di implementazione dichiarati in due interfacce diverse, ora la ragazza metodo vich ora

58
00:05:08,980 --> 00:05:13,060
ha un'interfaccia come tipo di riferimento per il parametro matter.

59
00:05:13,270 --> 00:05:19,930
Quindi la prima istruzione non può più avere un riferimento a uno slot fisso nel daemon del metodo e ha incontrato

60
00:05:19,950 --> 00:05:21,840
la tabella per i riferimenti.

61
00:05:21,900 --> 00:05:24,570
E poi 0 mentre è in CS a tavola lo è.

62
00:05:24,580 --> 00:05:26,070
Nel prossimo.

63
00:05:26,130 --> 00:05:32,340
Questo è principalmente dovuto al fatto che il tipo di riferimento è un'interfaccia e il metodo Invoke può apparire ovunque

64
00:05:32,340 --> 00:05:34,510
nella sorpresa della fine di è.

65
00:05:34,700 --> 00:05:40,470
Quindi JVM dovrà effettivamente servirli alla tabella dell'oggetto per trovare il metodo di destinazione da invocare a causa

66
00:05:41,690 --> 00:05:47,040
di questo invocando un metodo attraverso un'interfaccia come riferimento può essere leggermente più lento rispetto a se

67
00:05:47,040 --> 00:05:49,020
il riferimento è una classe.

68
00:05:49,020 --> 00:05:50,610
Quindi questo è un fatto interessante.

69
00:05:51,090 --> 00:05:53,290
Ma penso che la lentezza sarebbe minima.

70
00:05:53,460 --> 00:05:55,630
E non c'è qualcosa di cui preoccuparsi.

71
00:05:56,130 --> 00:05:59,300
Quindi dovremmo limitarci a ciò che impariamo da Java efficace.

72
00:05:59,700 --> 00:06:06,050
Siamo uno degli elementi che fanno riferimento agli oggetti in base alle loro interfacce, non alla seconda istruzione

73
00:06:06,040 --> 00:06:09,390
e il metodo go fa riferimento al metodo statico.

74
00:06:09,720 --> 00:06:16,240
Per questo non abbiamo bisogno di una tabella master un metodo statico tatticamente osso che sia al momento della compilazione stesso.

75
00:06:16,470 --> 00:06:18,210
Sappiamo dove si trova il metodo.

76
00:06:18,340 --> 00:06:23,640
E così la costante costante di runtime avrebbe un riferimento diretto a un metodo statico in classe.

77
00:06:24,240 --> 00:06:27,270
Quindi non importa quale oggetto è passato a una questione.

78
00:06:27,690 --> 00:06:33,970
In pratica, limitare le loro tabelle in potrebbe solo per esempio fare i metodi di istanza anche se solo le classi concrete

79
00:06:34,000 --> 00:06:35,650
hanno incontrato le loro tabelle.

80
00:06:35,650 --> 00:06:42,120
Anche le classi astratte non hanno alle loro tabelle in quanto non possono essere istanziate Quindi attraverso questo semplice

81
00:06:42,120 --> 00:06:45,710
esempio abbiamo visto come la struttura della tabella dei materiali.

82
00:06:45,720 --> 00:06:51,210
E abbiamo visto come Metulla in quello che succede quando il tipo della variabile di riferimento è una

83
00:06:51,210 --> 00:06:53,730
classe o un'interfaccia e questo è quanto.

84
00:06:53,790 --> 00:06:54,210
Grazie.
