1
00:00:01,280 --> 00:00:02,050
Ciao.

2
00:00:02,090 --> 00:00:02,700
Ben tornato.

3
00:00:02,720 --> 00:00:04,050
E questo è il dilemma.

4
00:00:04,370 --> 00:00:09,860
Quindi, se non hai finito con questo capitolo, in questo capitolo abbiamo appreso alcuni concetti

5
00:00:09,860 --> 00:00:12,420
fondamentali di programmazione orientata agli oggetti.

6
00:00:12,520 --> 00:00:21,710
Abbiamo iniziato con l'ereditarietà e nel processo abbiamo introdotto il polimorfismo Abbiamo quindi discusso la scrittura del metodo.

7
00:00:21,780 --> 00:00:29,260
Abbiamo anche discusso della classe dell'oggetto che è la madre di tutte le classi e, infine, del concatenamento del costruttore di Lubet.

8
00:00:29,280 --> 00:00:36,540
Ora andiamo avanti e guardiamo alcune delle cose importanti che abbiamo trattato in questo capitolo. L'ereditarietà è una

9
00:00:36,660 --> 00:00:40,100
delle caratteristiche fondamentali della programmazione orientata agli oggetti.

10
00:00:40,350 --> 00:00:48,570
Diamo un'occhiata ad alcuni vantaggi per l'ufficio che fornisce scrittura di codice duplicato in quanto il codice duplicato può essere astratto o

11
00:00:48,570 --> 00:00:54,230
esterno a una superclasse, ma non si tratta solo di correggere il codice duplicato.

12
00:00:54,420 --> 00:01:02,010
L'ereditarietà consente inoltre una migliore progettazione in quanto ci consente di definire le relazioni gerarchiche tra le classi

13
00:01:02,520 --> 00:01:07,290
attraverso le super-classi sul sottoprocesso e quindi terminare ogni capitolo.

14
00:01:07,380 --> 00:01:13,320
È stato detto che la programmazione orientata agli oggetti aiuta a moderare gli scenari del mondo reale in un modo

15
00:01:13,320 --> 00:01:14,060
più neutrale.

16
00:01:14,130 --> 00:01:19,890
E questo è stato dimostrato in questo capitolo quando abbiamo visto come l'aiuto all'ereditarietà si presenta con un

17
00:01:19,890 --> 00:01:22,930
design finale molto bello nella nostra storia lavorativa.

18
00:01:24,450 --> 00:01:31,050
Oltre ad ereditare l'ereditarietà delle funzionalità, possiamo anche leggere la funzionalità della superclasse che è approssimativa e che

19
00:01:31,830 --> 00:01:38,070
può essere usata per definire e parare un nuovo comportamento specifico della sottoclasse o del supplemento che

20
00:01:38,700 --> 00:01:45,030
può essere usato per estendere il comportamento del supercluster ed è qui che il super facile il lavoro

21
00:01:45,030 --> 00:01:46,550
entra in gioco

22
00:01:46,680 --> 00:01:52,960
Anche una sottoclasse che può anche fornire un'implementazione molto migliore dell'ereditarietà.

23
00:01:52,970 --> 00:01:59,090
Permette anche che la superclasse stiano definendo un protocollo comune per tutte le sue

24
00:01:59,090 --> 00:02:06,800
sottoclassi e sappiamo che questo è molto importante e aiuta a raggiungere qualcosa chiamato polimorfismo e polimorfismo aiuta chi

25
00:02:06,810 --> 00:02:14,370
scrive codice flessibile e pulito che implica il codice che è meno suscettibile a cambia e cambia qualcosa

26
00:02:14,370 --> 00:02:19,900
che accade tutto il tempo in qualsiasi ciclo di vita del software.

27
00:02:21,710 --> 00:02:29,180
Inoltre, ricorda sempre di usare entrambi i test se vuoi far diventare una classe una sottoclasse di un'altra.

28
00:02:29,190 --> 00:02:36,340
Si noti inoltre che una classe può sempre estendere solo un altro US e questo è molto critico.

29
00:02:36,610 --> 00:02:43,360
Tenere presente che il compilatore utilizza il tipo di riferimento di una variabile che ha deciso che un metodo

30
00:02:43,360 --> 00:02:45,320
può essere invocato o meno.

31
00:02:45,460 --> 00:02:51,050
OK, quindi userà il tipo di riferimento quando si tratta dei metodi di istanza in fase di esecuzione.

32
00:02:51,100 --> 00:02:59,000
JVM utilizza sempre l'oggetto entrambi disponibili per decidere quale metodo viene richiamato in quanto conosciamo la JVM.

33
00:02:59,080 --> 00:03:04,160
La nozione più specifica del metodo nell'albero ereditario.

34
00:03:04,220 --> 00:03:06,350
Tuttavia quando si tratta di metodi statici.

35
00:03:06,500 --> 00:03:12,050
Basta ricordare che la decisione su quale metodo statico dovrebbe essere invocato viene sempre eseguita in fase

36
00:03:12,050 --> 00:03:18,080
di compilazione stessa in quanto i metodi statici sono metodi di classe e non hanno nulla a che fare

37
00:03:18,080 --> 00:03:24,740
con oggetti creati in runtime in modo che non siano legati solo al concetto di override fare quando applicato a loro.

38
00:03:24,740 --> 00:03:32,310
Quindi tutto il concetto è qualcosa che entra in gioco solo in fase di esecuzione con oggetti quando si tratta di scavalcare il

39
00:03:32,310 --> 00:03:32,970
metodo.

40
00:03:33,010 --> 00:03:39,230
Ci sono solo buone regole che dobbiamo seguire oltre ad avere lo stesso meccanismo.

41
00:03:39,270 --> 00:03:45,200
La prima regola è che se ci sono dei parametri di metodo, il metodo di override dovrebbe

42
00:03:45,210 --> 00:03:46,670
anche avere emettitori semplici.

43
00:03:46,920 --> 00:03:48,250
C'è un numero di parametri.

44
00:03:48,300 --> 00:03:55,160
Dovrebbero essere anche i tipi di parametri e l'ordine dovrebbe essere visto dove il tipo di ritorno dovrebbe

45
00:03:55,160 --> 00:03:56,300
essere comparabile.

46
00:03:56,750 --> 00:04:02,330
Questo significa che può scrivere nella scrittura, ma dovrebbe essere uguale o di tipo scritto nel

47
00:04:02,330 --> 00:04:03,460
metodo della superclasse.

48
00:04:04,410 --> 00:04:09,300
E la seconda regola è che il metodo prevalente non può essere meno accessibile.

49
00:04:09,620 --> 00:04:13,780
Questo è il livello di accesso deve essere uguale o più amichevole.

50
00:04:13,790 --> 00:04:19,340
Essenzialmente queste regole suggerirebbero che il metodo operativo sta per soddisfare il contratto

51
00:04:19,340 --> 00:04:26,480
definito dalla superclasse, non che la superclasse stia definendo il protocollo comune per tutte le sue sottoclassi.

52
00:04:26,580 --> 00:04:27,780
Quindi il mondo esterno.

53
00:04:27,830 --> 00:04:34,630
Che cosa significa che i metodi di scrittura nelle sottoclassi apparirebbero esattamente come i metodi sovrascritti di Gupte VENX ha discusso

54
00:04:36,620 --> 00:04:43,310
la classe di oggetti che è madre di tutti i processi, così come fa la classe radice di qualsiasi albero

55
00:04:43,310 --> 00:04:44,260
di ereditarietà.

56
00:04:44,300 --> 00:04:52,400
Quindi ogni classe estende direttamente o indirettamente un oggetto più una classe di oggetti definisce i metodi di sobra che possono essere

57
00:04:52,400 --> 00:04:57,690
utilizzati nella sottoclasse. Inoltre, poiché è il top più Glosson 900 e St.

58
00:04:57,880 --> 00:05:05,390
Quindi, come tipo polimorfico sul lavoro, i progettisti l'hanno pienamente utilizzato come tipo polimorfico in molti dei

59
00:05:05,390 --> 00:05:07,500
metodi della libreria Java.

60
00:05:09,220 --> 00:05:15,040
Un altro concetto interessante di ereditarietà è il processo di concatenazione del costruttore, il costrutto che

61
00:05:15,060 --> 00:05:19,000
io penso che il superammasso sia inizializzato prima della sottoclasse.

62
00:05:19,510 --> 00:05:25,270
Quello è quando un oggetto di sottoclasse viene creato nell'esecuzione del costruttore della superclasse prima del costruttore della sottoclasse

63
00:05:25,270 --> 00:05:26,910
che esegue fino al completamento.

64
00:05:27,150 --> 00:05:28,060
E questo è necessario.

65
00:05:28,090 --> 00:05:33,160
Una sottoclasse potrebbe ereditare metodi di superclasse che potrebbero dipendere dal superammasso.

66
00:05:33,750 --> 00:05:40,240
Quindi il supercluster non è inizializzato, quindi potremmo incorrere in problemi seri in quanto i metodi ereditati potrebbero funzionare

67
00:05:40,240 --> 00:05:42,210
su alcuni stick non corretti.

68
00:05:43,250 --> 00:05:49,330
Quindi la prima affermazione in un costruttore di sottoclasse sarebbe un carrello con un costruttore di superclasse per invocare un

69
00:05:49,330 --> 00:05:50,490
costruttore di superclasse.

70
00:05:50,500 --> 00:05:56,650
Usiamo una dichiarazione di invocazione super e, se non ne forniamo una, il compilatore ne inserisce una per

71
00:05:57,720 --> 00:06:02,740
noi e ricorda che se c'è una dichiarazione di missione non funziona, non possiamo usare

72
00:06:02,740 --> 00:06:06,410
un'istruzione di super chiamata nello stesso costruttore in questo caso.

73
00:06:06,460 --> 00:06:13,600
L'ultimo costruttore sovraccarico verrà utilizzato per ottenere il costruttore della superclasse.

74
00:06:13,620 --> 00:06:18,270
Suppongo che questo sarebbe ancora fresco nella tua memoria per prevenire l'ereditarietà.

75
00:06:18,300 --> 00:06:21,460
Possiamo prendere in giro le classi finali o possiamo usarle.

76
00:06:21,480 --> 00:06:28,020
Ma leggo il costruttore che tu definiresti le classi di Marber se l'istanza di classe fosse necessaria, come in quel caso, non

77
00:06:28,020 --> 00:06:32,030
fare una classe di stringhe e tu dovresti usare un costruttore privato.

78
00:06:32,070 --> 00:06:38,700
Se la classe è una classe di utilità che include solo metodi statici con classi di

79
00:06:38,740 --> 00:06:41,350
costruttori private non intangibili non estensibili.

80
00:06:41,490 --> 00:06:47,030
E sappiamo che la classe di matematica usa un costruttore privato e che sono presenti tutti i

81
00:06:47,030 --> 00:06:53,300
punti chiave trattati in questo capitolo e nel prossimo capitolo continueremo ad apprendere concetti di design più orientati agli oggetti

82
00:06:53,960 --> 00:06:58,460
e spero che vi stiate divertendo a conoscere questi concetti orientati agli oggetti.

83
00:06:58,460 --> 00:07:02,040
Grazie per l'ascolto e ti vedrò nel prossimo capitolo e come.
