1
00:00:02,140 --> 00:00:04,120
Ciao, questo è il momento.

2
00:00:04,160 --> 00:00:05,100
E bentornato.

3
00:00:05,350 --> 00:00:10,660
Continuiamo la nostra discussione sull'interfaccia in quanto vi sono pochi altri dettagli importanti di cui abbiamo bisogno

4
00:00:10,660 --> 00:00:11,420
di discutere.

5
00:00:12,940 --> 00:00:17,940
Come una classe, un'interferenza può anche estendere quell'interfaccia.

6
00:00:18,070 --> 00:00:24,580
Sappiamo che estendendo la classe stiamo creando una classe specializzata in classi specializzate, in genere

7
00:00:24,610 --> 00:00:26,810
aggiungiamo nuove variabili sui metodi.

8
00:00:26,920 --> 00:00:29,590
Oltre a ciò che eredita.

9
00:00:29,650 --> 00:00:37,810
Allo stesso modo se qualcosa è anche in alcuni metodi astratti specializzati ON-OFF, possono anche aggiungere uno o più.

10
00:00:37,870 --> 00:00:45,480
Le variabili finali relative all'esempio qui mostrato provengono dall'API Java in cui l'interfaccia estende solo la connessione

11
00:00:45,480 --> 00:00:51,520
dell'interfaccia ma queste interfacce fanno parte del lavoro. Cosa stai facendo il pacchetto

12
00:00:51,520 --> 00:00:58,960
underbred discuterle in dettaglio e il capitolo framework delle collezioni non ha una classe che implementa il

13
00:00:59,230 --> 00:01:03,110
qualcosa è come implementare tutti i metodi astratti.

14
00:01:03,240 --> 00:01:07,560
Sii chiaro sia nelle sub che nelle super interfacce.

15
00:01:07,660 --> 00:01:14,110
Esiste una classe chiamata RLDS e implementa l'interfaccia elenco che vedi qui.

16
00:01:14,110 --> 00:01:21,340
Quindi implementa metodi astratti dal botanico così come le interfacce di raccolta sono più illecite che

17
00:01:21,340 --> 00:01:27,490
è molto importante saranno discusse più avanti nel capitolo quadro della raccolta.

18
00:01:27,500 --> 00:01:34,790
Un'altra cosa da notare è che una classe può solo implementare un'interfaccia che non può estendere un'interfaccia.

19
00:01:35,180 --> 00:01:41,590
Può solo estendere un'altra classe in modo che la classe possa estendere un'altra classe su quell'interfaccia che

20
00:01:41,590 --> 00:01:45,620
può estendersi a tale interfaccia creando così versioni più specializzate.

21
00:01:47,750 --> 00:01:53,550
Tuttavia, a differenza delle classi, un'interfaccia può estendere più interfacce.

22
00:01:53,570 --> 00:02:00,320
Ecco un altro esempio dell'API di luglio in cui un'interfaccia si estende alle interfacce

23
00:02:00,320 --> 00:02:05,390
per facilitare l'aggiunta di nuovi metodi appropriati per una combinazione.

24
00:02:05,420 --> 00:02:12,920
Ciò significa che ognuna delle superinterfacce specifica le proprie capacità uniche, ma l'interfaccia secondaria fornirebbe

25
00:02:13,100 --> 00:02:20,500
metriche che rappresentano le capacità di bordo delle super interfacce su questo non si incontrano

26
00:02:20,500 --> 00:02:21,370
comunemente.

27
00:02:21,550 --> 00:02:29,430
Buttman è necessaria una tale flessibilità interfacce così un passaggio Norburn che discute di classi astratte.

28
00:02:29,570 --> 00:02:36,190
Hai detto che una proposizione secondaria astratta non deve sovrascrivere i metodi astratti definiti nella superclasse.

29
00:02:36,370 --> 00:02:40,620
Lo stesso vale se una sottoclasse astratta implementa un'interfaccia.

30
00:02:40,830 --> 00:02:46,680
Non è necessario implementare metodi astratti dichiarati nell'interfaccia che possono essere eseguiti da

31
00:02:46,740 --> 00:02:48,990
sottoclassi della sottoclasse astratta.

32
00:02:48,990 --> 00:02:54,400
Quindi, tieni a mente che una classe astratta può anche implementare quell'attitudine.

33
00:02:54,450 --> 00:03:01,890
Non deve essere solo una normale polvere di cemento può essere una classe astratta per un esempio di Here in cui abbiamo

34
00:03:01,890 --> 00:03:03,920
due interfacce A e B.

35
00:03:04,100 --> 00:03:08,030
Dichiarazione di un nome di metodo astratto identico.

36
00:03:08,670 --> 00:03:15,210
La classe X che implementa entrambe queste interfacce fornisce un'implementazione per loro e che

37
00:03:15,230 --> 00:03:23,100
per ora ricordiamo che prima, quando abbiamo qualcosa di simile, abbiamo il problema del problema di Biman hollower.

38
00:03:23,110 --> 00:03:29,160
Lì era dovuto all'eredità multipla di identiche implementazioni materne.

39
00:03:29,710 --> 00:03:30,610
Ma eccolo qui.

40
00:03:30,610 --> 00:03:37,960
L'ereditarietà multipla di dichiarazioni di metodi identiche che non includono le terze implementazioni

41
00:03:38,800 --> 00:03:43,650
sulla sottoclasse è obbligata a fornire loro quell'implementazione.

42
00:03:43,840 --> 00:03:51,550
Quindi non avremo il problema fuori dal problema Diamon e questo è ed ecco uno scenario interessante.

43
00:03:51,770 --> 00:03:58,970
Come nella precedente interfaccia di esempio, dichiara il metodo astratto foo l'agente non-nut B è una classe

44
00:03:58,970 --> 00:04:06,860
completamente indipendente che fornisce una definizione di metodo per il metodo completo Zic per il calcestruzzo nella classe B.

45
00:04:06,860 --> 00:04:15,590
In questo caso la sottoclasse X che implementa l'interfaccia ae estende la classe B non deve

46
00:04:15,590 --> 00:04:19,030
fornire un'implementazione per la materia astratta.

47
00:04:19,030 --> 00:04:20,990
Foo nell'interfaccia.

48
00:04:21,690 --> 00:04:25,660
Il metodo foo definito allora B sarebbe sufficiente.

49
00:04:25,820 --> 00:04:28,740
A meno che la classe X non la sostituisca.

50
00:04:30,800 --> 00:04:33,890
Ora discutiamo un po 'sulle variabili dell'interfaccia.

51
00:04:33,890 --> 00:04:37,400
Vediamo innanzitutto perché le variabili e le interfacce devono essere fermate.

52
00:04:37,410 --> 00:04:44,670
È possibile trovare deve essere psicotico perché, come accennato in precedenza, le interfacce non sono istruttive.

53
00:04:44,800 --> 00:04:46,420
Cioè sono apolidi.

54
00:04:46,720 --> 00:04:53,150
Quindi le variabili dovrebbero essere accessibili qualificando i nomi delle variabili che il nome dell'interfaccia.

55
00:04:53,510 --> 00:05:00,090
Questo è il nome dell'interfaccia seguito dal DOT che è seguito dal nome della variabile e che andrebbe

56
00:05:00,120 --> 00:05:00,810
bene.

57
00:05:00,940 --> 00:05:09,230
Poiché le interfacce sono contratti puri e stanno facendo in modo che affermi che ciò che vediamo va

58
00:05:09,260 --> 00:05:12,100
bene al loro interno rimarrà tale.

59
00:05:13,160 --> 00:05:18,310
Quindi è come un accordo impostato su un miglioramento o cambiamento di pietra.

60
00:05:18,380 --> 00:05:23,920
Quindi se c'è una variabile con un certo valore allora quel valore non cambierà.

61
00:05:24,010 --> 00:05:29,720
Quindi altre classi possono accedere a quella variabile in una variabile che rimarrà sempre la stessa.

62
00:05:31,460 --> 00:05:37,690
Ad esempio, supponiamo di avere una tale azione del nome dell'interfaccia che dichiari un

63
00:05:37,760 --> 00:05:45,330
brillante toro chiamato Sukses che è inizializzato alla quantificazione del volume, quindi vediamo se abbiamo una classe chiamata client.

64
00:05:45,630 --> 00:05:52,440
A meno che tu non sappia che esiste una logica in cui il client si connette a qualche server

65
00:05:52,440 --> 00:06:00,570
remoto che Konik con successo, la proprietà di cretin viene chiamata Sukses fino a quel punto in cui può utilizzare la variabile Sukses

66
00:06:00,570 --> 00:06:02,030
nella connessione dell'interfaccia.

67
00:06:02,690 --> 00:06:10,190
Quindi questo cross client si aspetterebbe che il valore del successo rimarrà sempre quantificato in quanto potrebbe

68
00:06:10,190 --> 00:06:15,930
esserci qualche altro codice che utilizzerà questo valore restituito dal client di classe.

69
00:06:15,950 --> 00:06:21,660
Ora se il valore della variabile Sukses viene modificato, potrebbe essere in violazione del contratto.

70
00:06:21,980 --> 00:06:27,860
Quindi fa schifo come dichiarato in finale, abbiamo la certezza che non cambierà mai.

71
00:06:28,490 --> 00:06:32,900
I Muhtar non sono stati qui perché il successo è un valore costante.

72
00:06:33,180 --> 00:06:39,780
Sappiamo che il valore quantifico che il successo è inizializzato vet verrà copiato nell'istruzione scritta

73
00:06:39,900 --> 00:06:46,650
nel clown della classe che il compilatore copierà quel valore nel bytecode di un clown della classe.

74
00:06:48,770 --> 00:06:55,500
Finalmente vediamo come accedere a variabili con nomi identici da due diversi super-tipi.

75
00:06:55,550 --> 00:07:03,500
Quindi qui abbiamo due interfacce A e B che definiscono entrambe una variabile chiamata Colligan e non la classe X ..

76
00:07:03,520 --> 00:07:12,070
Implementa entrambi in B e come puoi vedere se la classe X accede a una variabile ma con quel nome semplice ottengono

77
00:07:12,070 --> 00:07:18,690
un errore del compilatore in quanto il compilatore ovviamente non sa quale versione di valore usare.

78
00:07:18,760 --> 00:07:23,210
Quindi c'è un nome di variabile in classe qui non mostrato nella prossima dichiarazione.

79
00:07:23,350 --> 00:07:30,430
Vinnie per qualificare quello costante per risolvere l'ambiguità in questo caso stiamo accedendo al russo

80
00:07:30,430 --> 00:07:38,980
e B ma solo se una di queste interfacce sta dichiarando la variabile vincolata e X verrà impostata direttamente.

81
00:07:38,990 --> 00:07:47,230
Si noti inoltre che la variabile vocale è un tutto maiuscolo, poiché sappiamo che per convenzione le variabili finali

82
00:07:47,530 --> 00:07:51,500
dello stocktake sono tutte le poliziotte separate da underscore.

83
00:07:51,580 --> 00:07:53,860
Quindi non dimenticare la convenzione di denominazione.

84
00:07:54,010 --> 00:07:55,360
Quindi questo è tutto.

85
00:07:55,360 --> 00:08:02,970
Successivamente faremo morire le interfacce, dopo di che discuteremo le interfacce in modo più concettualmente, così da sapere

86
00:08:02,970 --> 00:08:04,190
quando usarle.

87
00:08:04,540 --> 00:08:06,610
E questa è la parte più importante.

88
00:08:06,880 --> 00:08:07,480
Grazie.
