1
00:00:02,160 --> 00:00:07,580
Salve, gli dico cosa fare e tornerò come ho detto nella lezione precedente.

2
00:00:07,640 --> 00:00:16,110
Le interfacce aiutano a definire le funzionalità opzionali senza compromettere il polimorfismo con il polimorfismo, intendiamo che le

3
00:00:16,410 --> 00:00:24,710
interfacce aiutano a definire un protocollo comune che a sua volta aiuta a raggiungere il polimorfismo.

4
00:00:24,720 --> 00:00:27,290
Quindi vediamo come le interfacce aiutano a farlo.

5
00:00:27,510 --> 00:00:33,960
Sarà una lunga discussione sulle interfacce perché vogliamo andare oltre la semplice sintassi

6
00:00:34,440 --> 00:00:36,500
della parte sintattica.

7
00:00:36,690 --> 00:00:43,470
Vogliamo avere una chiara comprensione del ruolo delle interfacce in modo da poter progettare un buon

8
00:00:43,470 --> 00:00:45,220
software orientato agli oggetti.

9
00:00:45,330 --> 00:00:51,630
Quindi ci concentreremo su quegli aspetti della demo in cui la sintassi è messa in atto farà parte

10
00:00:51,840 --> 00:00:54,680
di ciò che tutte le lezioni successive.

11
00:00:54,780 --> 00:01:00,980
Ora sappiamo che questo è definito come protocollo comune per tutti i suoi sottotipi.

12
00:01:01,470 --> 00:01:07,930
Questo è il supertipo che annuncia che il mio libro su tutte le mie pipe

13
00:01:09,210 --> 00:01:17,440
ha questo tipo di metodi, in sostanza un supertipo sta specificando un contratto che fa quello che serve ai

14
00:01:17,450 --> 00:01:19,920
suoi sottotipi offrirebbe il supertipo.

15
00:01:19,920 --> 00:01:21,500
Definisce un contratto.

16
00:01:21,740 --> 00:01:28,930
E sai che il supertipo può essere una classe e il contratto sarebbe tutti metodi pubblici e protetti

17
00:01:28,950 --> 00:01:29,750
della classe.

18
00:01:31,070 --> 00:01:39,330
E se le classi astratte e quindi il contratto includessero anche metodi astratti sulla classe, se fosse astratto o

19
00:01:39,330 --> 00:01:44,680
meno, è possibile definire variabili di istanza in modo da renderlo tale.

20
00:01:45,090 --> 00:01:50,920
Inoltre se queste variabili sono dichiarate pubbliche faranno anche parte del contratto.

21
00:01:51,300 --> 00:01:59,520
Anche le variabili statiche dichiarate come pubbliche sarebbero parte del novizio del contratto di novizio del contratto può anche essere un'interfaccia

22
00:02:00,250 --> 00:02:05,800
sulla sintassi di interfaccia molto simile a una classe e la vedremo tra breve.

23
00:02:06,120 --> 00:02:13,170
Ma la differenza principale è che la classe parola chiave di riserva viene sostituita con

24
00:02:13,170 --> 00:02:22,380
l'interfaccia parola chiave, ma con l'interfaccia il contratto sarebbe per lo più solo metodi astratti pubblici che in genere non

25
00:02:22,380 --> 00:02:26,250
vedranno alcun metodo concreto prima dell'8 luglio.

26
00:02:26,250 --> 00:02:33,860
In passato erano solo metodi astratti pubblici, ma dal momento che Java 8 su parole un'interfaccia può anche come metodi non

27
00:02:33,900 --> 00:02:35,880
greci come vedremo in seguito.

28
00:02:36,000 --> 00:02:42,870
Ma generalmente ci si può aspettare che contengano solo metodi astratti le interfacce

29
00:02:43,230 --> 00:02:49,380
avranno sottoclassi che forniscono le reali implementazioni per quei metodi astratti.

30
00:02:49,400 --> 00:02:54,650
Inoltre le interfacce non sarebbero come qualsiasi stato che non possono come.

31
00:02:54,650 --> 00:02:56,120
Variabili di istanza.

32
00:02:56,420 --> 00:03:04,590
Quindi le interfacce sono stateless poiché non ci sono variabili di istanza, non c'è alcun punto che le istanziasse.

33
00:03:04,800 --> 00:03:11,400
Cioè non sono intangibili Undercliff ha senso solo perché l'intero punto di creazione di un oggetto è quello di

34
00:03:11,640 --> 00:03:16,560
memorizzare uno stato che è unico per l'oggetto non gestito giocato in quello stato.

35
00:03:16,580 --> 00:03:23,730
Gli altri metodi di istanza, dal momento che le interfacce non possono contenere variabili di istanza che non si

36
00:03:24,140 --> 00:03:27,340
possono avere velocità inconsistenti, non avrebbero senso istanziarle.

37
00:03:28,290 --> 00:03:35,610
Quindi, ovviamente, le interfacce non fanno alcun costrutto come un costruttore è necessario per creare

38
00:03:35,610 --> 00:03:36,770
un oggetto.

39
00:03:37,260 --> 00:03:44,760
Quindi in sostanza un'interfaccia generalmente ha solo metodi astratti che possono non avere ma non implementazioni

40
00:03:44,760 --> 00:03:50,020
di metodi e quindi possono essere considerati come puro contratto.

41
00:03:50,020 --> 00:03:52,600
Un'interfaccia può essere considerata come puro contratto.

42
00:03:52,840 --> 00:04:00,100
Questo è un metodo appena eseguito che rappresenta e non vede nulla circa le implementazioni del

43
00:04:00,700 --> 00:04:05,480
metodo di implementazione del metodo fornite da sottoclassi dell'interfaccia.

44
00:04:05,620 --> 00:04:10,200
Quindi è molto più generico di un processo che include classi astratte.

45
00:04:10,450 --> 00:04:18,210
Come per le classi, è possibile definire un comportamento concreto che è un metodo con cui il modello di implementazione può

46
00:04:18,210 --> 00:04:20,040
funzionare con le classi.

47
00:04:20,050 --> 00:04:28,560
Variabili di istanza a causa di questa mancanza di implementazione possiamo aggiungere a progetti più flessibili.

48
00:04:29,830 --> 00:04:38,290
Ad esempio, come vediamo qui, l'interfaccia Java consente a una classe di essere sottografi o interfacce multiple oltre

49
00:04:38,710 --> 00:04:42,120
a essere una sottoclasse di una sottoclasse.

50
00:04:42,130 --> 00:04:49,440
Quindi, qui la sottoclasse non è Brousseau Tcl ed è una sottoclasse di una superclasse e

51
00:04:50,470 --> 00:04:56,470
di tre interfacce che non potrebbero farlo con le sole classi poiché

52
00:04:56,980 --> 00:05:05,660
Java non supporta l'ereditarietà multipla delle classi a causa dell'ambiguità dei metodi ereditari che sembrano nomi da più superclassi.

53
00:05:05,680 --> 00:05:13,950
Inoltre è anche molto comune per la stessa interfaccia di come sottoclassi di sottoclassi di Andi possono

54
00:05:13,950 --> 00:05:16,570
essere da progetti completamente diversi.

55
00:05:17,280 --> 00:05:20,810
Tutto ciò sarà chiaro man mano che progrediamo nella sezione.

56
00:05:20,900 --> 00:05:26,970
E ovviamente per ora diamo un'occhiata alla sintassi per definire un'interfaccia.

57
00:05:26,970 --> 00:05:30,430
Come accennato in precedenza, la dichiarazione è simile a una classe.

58
00:05:30,540 --> 00:05:37,170
L'unica differenza è che la classe parola chiave sostituisce la parola interfaccia e l'interfaccia della parola

59
00:05:37,170 --> 00:05:40,490
chiave è seguita dal nome dell'interfaccia e dall'interfaccia.

60
00:05:40,500 --> 00:05:47,580
Come accennato in precedenza, dato che la non-conoscenza tangibile avanzata è implicitamente astratta, si può in effetti

61
00:05:47,580 --> 00:05:52,800
includere la parola abstract nella Dichiarazione e il compilatore non si lamenterà.

62
00:05:52,800 --> 00:05:56,250
Ma non lo facciamo in quanto sarebbe ridondante.

63
00:05:56,320 --> 00:05:58,390
Il modificatore pubblico è facoltativo.

64
00:05:58,630 --> 00:05:59,410
Tutto no.

65
00:05:59,410 --> 00:06:06,890
Solitamente si vedrebbero soprattutto le interfacce pubbliche in modo che abbiano il modificatore pubblico.

66
00:06:07,030 --> 00:06:14,590
Sappiamo che se escludiamo il modificatore pubblico significa che l'interfaccia è visibile solo all'interno del pacchetto.

67
00:06:14,590 --> 00:06:17,940
Quindi questo è l'accesso predefinito che è attivo.

68
00:06:18,070 --> 00:06:25,300
Sottoscrivi l'accesso privato del pacchetto come qualsiasi altro modificatore di accesso in una dichiarazione dell'interfaccia.

69
00:06:25,300 --> 00:06:27,260
E questo è un caso con il pilastro.

70
00:06:27,650 --> 00:06:30,010
Quindi prenota una classe un'interfaccia.

71
00:06:30,150 --> 00:06:34,020
Come su predefinito sono i livelli di accesso pubblico.

72
00:06:34,240 --> 00:06:36,870
Questo non è un accesso privato o particolare.

73
00:06:37,060 --> 00:06:38,690
Quindi rimettila nella tua mente.

74
00:06:38,800 --> 00:06:46,780
Le classi sulle interfacce possono solo come impostazione predefinita l'accesso pubblico Slavin non viene a un'interfaccia

75
00:06:46,780 --> 00:06:55,260
e come può includere variabili costanti statiche che sono variabili dichiarate ret static sui modificatori finali in modo

76
00:06:56,170 --> 00:06:59,970
da poter evidenziare anche variabili argomento limitate.

77
00:07:00,130 --> 00:07:02,710
Ma tieni presente che le interfacce non possono come.

78
00:07:02,740 --> 00:07:05,110
Le variabili di istanza sono specificate in precedenza.

79
00:07:06,870 --> 00:07:10,180
E come discusso in precedenza, può anche includere metodi astratti.

80
00:07:10,450 --> 00:07:13,140
Questo è Michael Swit di nessuno.

81
00:07:13,200 --> 00:07:21,050
Abbiamo anche detto che prima di Java 8 erano solo metodi astratti ma dall'8 luglio in poi un'interfaccia può anche vedere

82
00:07:21,050 --> 00:07:24,420
come tutti i metodi greci come vedremo in seguito.

83
00:07:24,650 --> 00:07:31,730
Ma generalmente ci si può aspettare che contengano solo metodi astratti anche le variabili statiche non

84
00:07:31,790 --> 00:07:34,310
sono comunemente viste nelle interfacce.

85
00:07:34,310 --> 00:07:41,450
Quindi forse un aiuto Java un'interfaccia era considerata al cento per cento pura astrattezza.

86
00:07:41,450 --> 00:07:46,020
Questo includerebbe solo metodi astratti.

87
00:07:46,160 --> 00:07:53,630
Tuttavia, con le interfacce dell'8 luglio è possibile anche come alcune implementazioni sotto forma di qualcosa chiamato metodi

88
00:07:53,720 --> 00:08:00,250
predefiniti e statici, diversamente dai metodi astratti, questi metodi sarebbero importanti per i corpi.

89
00:08:00,330 --> 00:08:02,680
Cioè sono metodi concreti.

90
00:08:02,780 --> 00:08:10,190
Quindi da Dhaba 8 in poi le interfacce non sono più al 100 percento le classi astratte pure che iniziano

91
00:08:10,250 --> 00:08:16,790
i metodi sono proprio come i moti statici di Binoy e più avanti vedranno perché questi nuovi tipi

92
00:08:16,880 --> 00:08:20,310
di metodi sono stati inseriti in Java 8.

93
00:08:20,490 --> 00:08:29,430
Infine le interfacce possono anche includere X annidato che significa che può includere classi nidificate sono interfacce annidate sono tipi che

94
00:08:30,190 --> 00:08:35,700
sono stati discussi in una sezione separata, quindi non preoccupiamoci per ora.

95
00:08:35,760 --> 00:08:43,650
In generale, per lo più gli argomenti astratti sono gli unici in cui si vedono interfacce poco evidenti enfatizzate nel

96
00:08:43,650 --> 00:08:51,210
colore rosso e la luce a volte si possono vedere altri membri come metodi diversi o variabili finali

97
00:08:51,510 --> 00:08:55,390
statiche ma il più delle volte sarebbero metodi astratti.

98
00:08:55,390 --> 00:09:02,770
Si noti inoltre che tutti questi membri su un'interfaccia sono implicitamente pubblici, quindi non è necessario

99
00:09:02,770 --> 00:09:05,130
specificare esplicitamente il modificatore pubblico.

100
00:09:05,650 --> 00:09:12,160
In caso di metodi astratti anche il modificatore astratto è implicito e quindi può essere omesso.

101
00:09:14,190 --> 00:09:18,630
E qui ecco la dichiarazione dell'interfaccia di esempio per il nostro requisito.

102
00:09:18,640 --> 00:09:24,710
Quindi abbiamo l'interfaccia con il nome sparabile, il metodo astratto recupera i dati degli oggetti.

103
00:09:24,940 --> 00:09:31,120
Poiché è un metodo astratto, non ha alcuna implementazione e termina con un punto e virgola,

104
00:09:31,150 --> 00:09:35,140
ma l'abstract del modificatore viene omesso poiché è implicito.

105
00:09:35,140 --> 00:09:42,340
Come ho già detto in precedenza, il modificatore pubblico può anche essere omesso poiché è implicito per qualsiasi membro

106
00:09:42,760 --> 00:09:48,860
di un'interfaccia e in quanto questione di stile è scoraggiato a specificare esplicitamente i modificatori predefiniti.

107
00:09:48,970 --> 00:09:55,970
Quindi non includiamo i modificatori predefiniti nel codice che scriviamo anche se non ci

108
00:09:55,970 --> 00:10:03,260
sono variabili in questo esempio, qualsiasi variabile dichiarata in un'interfaccia è per impostazione predefinita come statica.

109
00:10:03,260 --> 00:10:08,890
Quindi ancora una volta non devi concludere l'espressività di questi modificatori.

110
00:10:09,030 --> 00:10:13,850
Come accennato in precedenza, tutti i membri dell'interfaccia sono pubblici per impostazione predefinita.

111
00:10:14,160 --> 00:10:21,270
Quindi, indipendentemente dal fatto che si tratti di un metodo variabile o di una classe nidificata o un'interfaccia nidificata, per impostazione predefinita

112
00:10:21,330 --> 00:10:23,450
avrebbe un livello di accesso pubblico.

113
00:10:25,100 --> 00:10:30,530
Non è possibile utilizzare modificatori privati o protetti che interfacciano i membri.

114
00:10:30,620 --> 00:10:33,380
Possono come solo i livelli di accesso pubblico.

115
00:10:33,650 --> 00:10:38,290
Quindi puoi quindi chiedere che cos'è l'accessibilità solo all'interno del pacchetto.

116
00:10:38,630 --> 00:10:45,950
E quello che succederebbe è che l'interfaccia stessa ha un accesso predefinito che il suo modificatore pubblico

117
00:10:45,950 --> 00:10:53,730
è omesso dalla dichiarazione dell'interfaccia e che il livello di accesso pubblico dei membri dell'interfaccia non è più applicabile.

118
00:10:54,020 --> 00:10:57,760
E quei membri non sono visibili al di fuori del pacchetto.

119
00:10:57,830 --> 00:11:04,850
Quindi, in pratica, il livello di accesso pubblico dei membri viene sostituito dal livello di accesso

120
00:11:04,850 --> 00:11:07,220
predefinito specificato nella dichiarazione dell'interfaccia.

121
00:11:07,430 --> 00:11:15,530
Ma generalmente vedrai le interfacce su come il livello di accesso pubblico

122
00:11:15,530 --> 00:11:19,940
sia importante anche come le cuffie.

123
00:11:19,950 --> 00:11:24,090
Ecco come lavori su un'interfaccia per le classi.

124
00:11:24,090 --> 00:11:31,520
Sappiamo che gli estensori della tastiera usati per l'interfaccia useranno la parola implements.

125
00:11:31,590 --> 00:11:38,670
Quindi nel nostro esempio abbiamo comprato libri su lezioni di wabbling che avrebbero implementato la condivisione e avrebbero fornito

126
00:11:38,730 --> 00:11:46,520
le loro implementazioni per ottenere che io possa leggere omet e le classi di libri estendono ancora la classe dei segnalibri.

127
00:11:46,630 --> 00:11:52,130
Non che il multiclasse estenderebbe Brookbank ma non implementerà la condivisione.

128
00:11:52,270 --> 00:11:58,490
Poiché sappiamo che non dovrebbe essere condiviso con un partner o un sito web in relazione alle estensioni delle

129
00:11:58,490 --> 00:11:59,810
parole chiave sugli attrezzi.

130
00:11:59,810 --> 00:12:07,250
Semanticamente anche questo ha senso, ad esempio la parola chiave implementa suggerisce che una classe sta

131
00:12:07,250 --> 00:12:11,570
per implementare i metodi astratti dichiarati in un'interfaccia.

132
00:12:11,990 --> 00:12:19,220
Ma la parola chiave X10 suggerisce che una classe estenderà la funzionalità di una superclasse

133
00:12:19,220 --> 00:12:25,550
che erediterà il metodo concreto ma fornirà anche l'implementazione per i metodi

134
00:12:25,550 --> 00:12:26,370
astratti.

135
00:12:26,430 --> 00:12:29,130
E naturalmente può anche aggiungere alcuni nuovi metodi.

136
00:12:29,300 --> 00:12:37,010
Estendendo così la funzionalità duck è la dichiarazione di classe che include sia estensioni che implementazioni squaw

137
00:12:37,010 --> 00:12:42,610
e quindi implementa la classe deve sempre seguire la classe extents.

138
00:12:42,680 --> 00:12:45,160
Altrimenti si ottiene un errore di compilazione.

139
00:12:45,200 --> 00:12:51,500
Puoi anche ascoltare istanze in cui la classe implementa solo una o più interfacce ma non estende alcuna

140
00:12:51,500 --> 00:12:53,860
classe e questa è una possibilità.

141
00:12:56,060 --> 00:13:02,180
Quindi, ecco il diagramma di Newgrounds ma prenotate le classi Roblin implementando l'interfaccia condivisibile

142
00:13:02,180 --> 00:13:09,590
per fornire implementazioni per ottenere elementi che ometer ereditarietà multiplo non è più un problema ora poiché

143
00:13:09,590 --> 00:13:15,020
solo un segnalibro di classe viene esteso mentre l'altro è l'interfaccia.

144
00:13:15,170 --> 00:13:17,140
Solo una breve nota sulla notazione qui.

145
00:13:17,450 --> 00:13:23,870
Dato che abbiamo in questo diagramma di classe qualcosa di nuovo, indica un'interfaccia usando l'interfaccia per le

146
00:13:24,020 --> 00:13:26,280
parole chiave sul nome dell'interfaccia.

147
00:13:26,320 --> 00:13:32,500
Inoltre, la relazione degli attrezzi è indicata usando la linea tratteggiata ma, per esempio, la

148
00:13:32,500 --> 00:13:38,330
relazione sarà sempre una linea continua riguardante l'ARO alla fine della linea tratteggiata.

149
00:13:38,350 --> 00:13:44,980
A rigor di termini deve essere chiuso come un triangolo e ciò vale sia per l'interfaccia che

150
00:13:44,980 --> 00:13:46,960
per la relazione extenso.

151
00:13:47,260 --> 00:13:51,200
Ma questo è semplicistico per questa notazione.

152
00:13:51,220 --> 00:13:57,360
Quindi, usando l'interfaccia abbiamo raggiunto il nostro obiettivo, fare solo delle chiacchiere sulle classi del libro

153
00:13:57,370 --> 00:14:05,730
hanno la capacità condivisibile, ma sono solo queste due classi che definiscono che l'elemento get non ha un protocollo comune come definito.

154
00:14:05,750 --> 00:14:07,950
Siamo l'interfaccia condivisibile.

155
00:14:07,950 --> 00:14:15,070
Questo protocollo comune non si applica alla classe film in quanto non implementa l'interfaccia shittim così condivisibile

156
00:14:15,090 --> 00:14:20,880
che definisce le funzionalità opzionali di cui il weblink e la book necessitano.

157
00:14:20,910 --> 00:14:29,160
Fornisce anche un protocollo comune sulla bellezza qui è che otteniamo anche i benefici polimorfici dell'eredità multipla che

158
00:14:29,250 --> 00:14:37,670
è un esempio di arte che un oggetto libro può ora essere assegnato a una variabile di tipo merker

159
00:14:37,670 --> 00:14:38,880
di riferimento.

160
00:14:39,110 --> 00:14:47,360
Oltre al gradevole tipo di riferimento di riferimento, il libro Class è un sottotipo di merda proprio come il

161
00:14:47,350 --> 00:14:50,430
sottotipo di tutti i libri di Marcus.

162
00:14:50,840 --> 00:14:55,810
Quindi una classe che implementa un'interfaccia è un sottotipo di tale interfaccia.

163
00:14:55,920 --> 00:14:58,030
Quindi Book Book e Webling.

164
00:14:58,210 --> 00:15:05,520
Oltre ad essere un libro sul balbettio ci sono anche altri due tipi che sono condivisibili e condivisi e questo

165
00:15:07,650 --> 00:15:13,940
non è possibile e spostare l'oggetto non può essere assegnato a una variabile del tipo merda Habel

166
00:15:14,400 --> 00:15:16,640
in quanto non implementa shittim.

167
00:15:16,890 --> 00:15:21,040
Cioè non è un sottotipo spesso condivisibile.

168
00:15:21,050 --> 00:15:28,730
Tieni presente che anche questo non è possibile in quanto un'interfaccia non è intangibile a cui un'interfaccia

169
00:15:28,730 --> 00:15:34,200
può essere referenziata e non può mai essere un tipo di oggetto.

170
00:15:34,400 --> 00:15:37,170
OK, quindi tutti noi lo ricordiamo.

171
00:15:37,330 --> 00:15:46,890
Non che in generale quel downpipe sia spesso usato per riferirsi a una classe o un'interfaccia in questa diapositiva mostra un esempio

172
00:15:46,890 --> 00:15:51,860
in cui un'interfaccia viene usata come un barometro del metodo.

173
00:15:52,170 --> 00:15:59,250
Quindi, qui il metodo è condivisibile come un tipo di parametro del metodo e può essere invocato

174
00:15:59,460 --> 00:16:04,590
passando gli oggetti book o Roebling ma non più oggetti su Witan.

175
00:16:04,590 --> 00:16:08,890
Convincili ad ammettere che viene invocato su di loro al parametro.

176
00:16:08,970 --> 00:16:14,100
Quindi se l'oggetto viene passato, viene invocata la sua versione del metodo Get item.

177
00:16:14,370 --> 00:16:19,560
Allo stesso modo, se viene passato l'oggetto eyeblock, allora il motion off esce solo per entrare di più.

178
00:16:19,830 --> 00:16:24,490
Quindi è proprio come nel caso di usare una superclasse come parametro di metodo.

179
00:16:24,960 --> 00:16:30,580
Quindi quello che stai vedendo qui è essenzialmente il polimorfismo.

180
00:16:30,640 --> 00:16:36,040
Come accennato in precedenza, una classe può essere una sottoclasse di più interfacce.

181
00:16:36,160 --> 00:16:40,200
Questo è un classico e implementa più interfacce come puoi vedere qui.

182
00:16:40,210 --> 00:16:47,340
La classe del libro implementa merda un toro così come un'altra carta di interfaccia comunemente usata comparabile.

183
00:16:47,440 --> 00:16:53,860
Questo è da Java ho comprato il pacchetto Lang e guarderò questa interfaccia in seguito

184
00:16:53,920 --> 00:16:58,950
le interfacce sono semplicemente comorbilità e possiamo anche avere più interfacce.

185
00:16:59,000 --> 00:17:05,960
Che cosa significa anche la classe o quali diritti il metodo astratto rispetto al quale è definito

186
00:17:05,960 --> 00:17:13,440
da un'interfaccia comparabile implementando comparabili e Dauphiness una classe annuncia che i suoi oggetti possono essere confrontati tra

187
00:17:13,440 --> 00:17:20,220
loro ed è utile quando vogliamo archiviare quegli oggetti in un certo ordine e questa interfaccia

188
00:17:20,220 --> 00:17:22,060
sarà discussa più tardi.

189
00:17:22,080 --> 00:17:28,050
Ora, per chi guarda questa definizione di classe quando guarda l'interfaccia comparabile nella parte

190
00:17:28,050 --> 00:17:34,050
di dichiarazione istantaneamente, sa che gli oggetti di questa classe possono essere comparabili l'uno

191
00:17:34,050 --> 00:17:35,240
con l'altro.

192
00:17:35,250 --> 00:17:39,160
Ora puoi riferirlo a un dottore che ha diversi gradi.

193
00:17:39,300 --> 00:17:41,650
I gradi sono le interfacce.

194
00:17:41,700 --> 00:17:45,480
Solo guardando i gradi conosciamo le capacità del dottore.

195
00:17:45,620 --> 00:17:47,430
Questo è esattamente il caso qui.

196
00:17:47,760 --> 00:17:55,860
Solo guardando le interfacce del libro una dichiarazione sappiamo che qualsiasi oggetto libro offre le capacità o

197
00:17:55,980 --> 00:18:04,940
essere condiviso e confrontare un altro oggetto libro può anche essere assegnato a una variabile il cui tipo è comparabile.

198
00:18:05,370 --> 00:18:12,580
Quindi, implementando classi comparabili offrendo una nuova capacità comparabile.

199
00:18:12,730 --> 00:18:15,780
Questa è l'introduzione principale alle interfacce.

200
00:18:15,840 --> 00:18:17,130
Solo per riassumere

201
00:18:17,160 --> 00:18:24,820
Un'interfaccia è semplicemente un puro contratto ed è molto più generica di anche classi astratte.

202
00:18:24,870 --> 00:18:32,780
Non ha nemmeno lo stato quindi è solo una specifica di altissimo livello che le sottoclassi implementerebbero.

203
00:18:32,890 --> 00:18:38,230
Ci sono alcune cose più importanti di cui abbiamo bisogno per discutere sulle interfacce e lo faremo

204
00:18:38,230 --> 00:18:39,220
nella prossima lezione.

205
00:18:39,220 --> 00:18:43,130
Dopo ciò li stavamo facendo fuori tutto ciò che abbiamo imparato.

206
00:18:43,150 --> 00:18:43,530
Grazie.
