1
00:00:00,180 --> 00:00:06,150
Veamos el tema constructores, porque bien importante poder pasar parámetro, por ejemplo, de la clase

2
00:00:06,240 --> 00:00:07,710
hija a la clase padre.

3
00:00:07,770 --> 00:00:10,140
Pero vamos a partir desde cero, desde el principio.

4
00:00:10,260 --> 00:00:15,510
Bueno, por defecto todavía no tenemos ningún constructor, ni siquiera uno vacío ya, pero por detrás

5
00:00:15,510 --> 00:00:15,930
de escena.

6
00:00:16,020 --> 00:00:21,810
Obviamente cada clase, por ejemplo alumno, profesor, tiene su constructor vacío y de forma automática

7
00:00:21,810 --> 00:00:24,690
también llama al constructor vacío del padre.

8
00:00:25,230 --> 00:00:30,690
Acá tenemos alumno, aunque no se vea, el constructor lo tiene y persona también, también lo tiene.

9
00:00:31,020 --> 00:00:33,840
Entonces, какие se invoca una instancia de alumno?

10
00:00:33,960 --> 00:00:38,520
Una vez que se invoca el constructor de alumno automáticamente llama al constructor del padre para poder

11
00:00:38,610 --> 00:00:39,330
inicializar.

12
00:00:39,810 --> 00:00:45,480
Veamos entonces la idea esta clase implementar constructores vacío y personalizarlo de forma explícita.

13
00:00:45,660 --> 00:00:49,800
Después vamos a ver el tema de los parámetros cómo pasar el nombre Lapido y así.

14
00:00:49,980 --> 00:00:53,370
Y también, por supuesto, puede reutilizar los constructores del padre.

15
00:00:54,880 --> 00:00:59,760
Entonces public recuerden que el constructor tiene que ser public para que podamos instanciar o por

16
00:00:59,760 --> 00:01:00,740
último default.

17
00:01:00,900 --> 00:01:03,630
Pero si está en otro package, el default no va a funcionar.

18
00:01:03,750 --> 00:01:04,980
Mismo nombre que la clase.

19
00:01:07,780 --> 00:01:08,020
Listo.

20
00:01:08,140 --> 00:01:08,740
Ahí tenemos.

21
00:01:08,800 --> 00:01:15,760
Entonces vamos a tener un shout solamente para el ejemplo persona do punto inicializado.

22
00:01:15,760 --> 00:01:16,490
Constructor.

23
00:01:20,830 --> 00:01:21,370
Perfecto.

24
00:01:21,550 --> 00:01:23,980
Vamos, alumno, vamos a tener lo mismo.

25
00:01:24,310 --> 00:01:26,350
Un constructor vacío por defecto.

26
00:01:38,500 --> 00:01:39,340
Pro-fesor.

27
00:01:55,020 --> 00:01:57,000
Y por último, alumno internacional.

28
00:02:16,380 --> 00:02:21,420
Perfecto, entonces básicamente tenemos lo mismo, pero de forma explícita y con algún mensaje para

29
00:02:21,420 --> 00:02:24,120
que lo podamos ir visualizando en el terminal.

30
00:02:24,160 --> 00:02:28,860
Entonces ahora nos vamos a ejemplo herencia y para poder dar una separación, porque cree que se crea,

31
00:02:28,860 --> 00:02:34,740
por ejemplo, una instancia, una referencia en alumno bueno, va a invocar el constructor del alumno,

32
00:02:35,250 --> 00:02:41,310
pero a su vez el constructor del alumno, aunque no se vea acá de forma implícita automática, va a

33
00:02:41,310 --> 00:02:47,550
invocar el constructor de persona, aunque no se ve ya, pero lo va a hacer y así cada uno.

34
00:02:47,640 --> 00:02:51,540
Entonces la idea es por acá dar una separación nada más.

35
00:02:51,600 --> 00:02:52,170
Shout.

36
00:02:54,000 --> 00:02:55,080
Por ejemplo, eso

37
00:02:59,010 --> 00:03:01,350
la instancia objeto de alumno.

38
00:03:06,840 --> 00:03:09,390
Y así por cada uno, entonces también.

39
00:03:22,470 --> 00:03:27,120
Acá agregué faltó uno porque sea igual de bien, bajamos, profesor.

40
00:03:40,100 --> 00:03:42,520
Y por último, nada más.

41
00:03:43,890 --> 00:03:46,080
Bueno, quizá acá para dar una separación.

42
00:03:52,450 --> 00:03:54,460
Bien, levantemos, vamos a revisar.

43
00:03:54,880 --> 00:03:56,410
Equili derecho el Rann.

44
00:03:59,160 --> 00:04:02,350
Veamos, al principio se fijan creando la instancia de clase.

45
00:04:02,430 --> 00:04:08,430
Alumno primero persona inicializado constructor, después alumno inicializa constructor.

46
00:04:08,820 --> 00:04:11,370
Entonces se cae que se crea la instancia de alumno.

47
00:04:12,730 --> 00:04:18,220
Entonces, lo primero que hace antes incluso de imprimir esto, lo que hace llamar al constructor del

48
00:04:18,220 --> 00:04:19,870
padre, inicializa el padre.

49
00:04:20,780 --> 00:04:22,610
Se fijan, entonces se imprime.

50
00:04:22,630 --> 00:04:24,460
Persona inicializado, constructor.

51
00:04:24,790 --> 00:04:26,380
Es muy importante tener estos conceptos.

52
00:04:26,380 --> 00:04:29,590
Claro que los constructores se van encadenando.

53
00:04:29,680 --> 00:04:33,340
Las llamadas se fijan cuando tenemos constructor vacío, está perfecto.

54
00:04:33,490 --> 00:04:36,430
Ahora bien, también se puede invocar de forma explícita.

55
00:04:36,550 --> 00:04:40,340
Por ejemplo, si nos vamos alumno acá simplemente con shuper.

56
00:04:41,950 --> 00:04:48,250
Entonces con la palabra clave shuper lo que hago es invocar el constructor del padre y siempre el super

57
00:04:48,550 --> 00:04:50,800
o la llamada de un constructor del padre.

58
00:04:50,950 --> 00:04:56,740
En una clase hija tiene girarte que cualquier instrucción siempre en la primera línea del constructor

59
00:04:56,800 --> 00:04:57,790
primera sentencia.

60
00:04:58,030 --> 00:05:01,390
Porque por ejemplo, qué pasa si corto esto y lo invoco?

61
00:05:01,390 --> 00:05:09,340
Acá me marco un error y acá lo dice muy claro llamar a Shuper debe ser la primera sentencia en el cuerpo

62
00:05:09,340 --> 00:05:11,830
de constructor, es decir, él lo primero que se invoca.

63
00:05:12,860 --> 00:05:20,810
Entonces, recuerden, acá hay ta de forma explícita, pero también si se omite, va a llamar por defecto

64
00:05:20,930 --> 00:05:25,250
al constructo del padre, pero el constructor vacío, en este caso sin parámetros.

65
00:05:25,370 --> 00:05:30,650
Ahora cuidado, porque si el padre no tuviera un constructor vacío, daría un error solamente modo ejemplo.

66
00:05:31,750 --> 00:05:36,640
Bueno, si comento esto está bien, porque por defecto va a tener un constructor vacío.

67
00:05:37,180 --> 00:05:39,850
Se fijan independiente que acá lo tenga.

68
00:05:39,850 --> 00:05:45,700
El dijo de forma explícita tanto alumno como profesor, bueno, alumno internacional que es hijo de

69
00:05:45,700 --> 00:05:52,210
alumno, pero acá invoca el constructor vacío del padre, el constructor implícito.

70
00:05:53,870 --> 00:05:55,550
Se fijan porque te comentaba.

71
00:05:55,700 --> 00:05:59,780
Ahora bien, qué pasa si lo comento y tuviera un constructor con parámetros, con argumentos?

72
00:05:59,930 --> 00:06:01,340
Aunque después vamos a ver más en detalle.

73
00:06:01,550 --> 00:06:05,020
Pero por ejemplo, ya voy a modificar este ya.

74
00:06:05,240 --> 00:06:08,300
De hecho, no es necesario que lo hagan todavía, porque después vamos a ver más en detalle.

75
00:06:08,370 --> 00:06:16,550
Pero por ejemplo, estric nombre turalmente que recibe un nombre perfecto eita automáticamente acá debería

76
00:06:16,550 --> 00:06:17,240
aparecer un error.

77
00:06:17,900 --> 00:06:23,420
Fíjense que cuando el padre implementa un constructor con parámetro, ya deja de tener un constructor

78
00:06:23,420 --> 00:06:24,080
por defecto.

79
00:06:24,200 --> 00:06:26,290
Ahora el constructor por defecto es éste.

80
00:06:26,520 --> 00:06:31,100
Este de acá ya no tiene un constructor vacío a menos que lo sobrecargue.

81
00:06:31,310 --> 00:06:34,550
Es decir, que implemente otro constructor vacío sin parámetro.

82
00:06:34,970 --> 00:06:37,310
Se fijan entonces acá como solución.

83
00:06:37,400 --> 00:06:42,620
Como el padre ya no tiene un constructor vacío, entonces acá tenemos que utilizar el constructor compatible

84
00:06:42,620 --> 00:06:43,100
del padre.

85
00:06:43,220 --> 00:06:48,570
Por ejemplo, super y acá pasar el nombre se fijan un string por lo menos.

86
00:06:49,160 --> 00:06:50,960
Aunque no es lo ideal porque lo ideal acá.

87
00:06:51,860 --> 00:06:57,470
Es al menos que el constructor del hijo sea compatible o similar al constructor del padre.

88
00:06:57,590 --> 00:07:03,350
Es decir, que el hijo recibe el nombre, por ejemplo, no es necesario que hagan esto solamente para

89
00:07:03,350 --> 00:07:03,830
el ejemplo.

90
00:07:04,430 --> 00:07:06,980
Entonces ahora acá se fijan perdón.

91
00:07:08,510 --> 00:07:08,700
Acá.

92
00:07:09,530 --> 00:07:10,220
Ahora, claro.

93
00:07:10,370 --> 00:07:12,290
AL1 Internacional, obviamente del error.

94
00:07:12,320 --> 00:07:18,890
Porque recuerden que el 1 internacional llama al conductor del padre que es alumno pero alumno tampoco

95
00:07:18,890 --> 00:07:19,940
tiene conductor vacío.

96
00:07:20,630 --> 00:07:24,950
Entonces, de forma jerárquica, acá también tendré que inicializar el nombre.

97
00:07:25,220 --> 00:07:28,130
Ahora bien, como explicaba otra solución.

98
00:07:29,260 --> 00:07:33,730
Sería que el padre, de forma explícita también tenga el constructor vacío,

99
00:07:38,200 --> 00:07:44,500
es decir, que no haga nada, se fijan entonces bueno, al 1 también tendría para que 1 internacional

100
00:07:44,590 --> 00:07:48,160
no dé error y pueda invocar este constructor vacío por defecto.

101
00:07:54,780 --> 00:07:57,150
Yei, deja de dar error acá.

102
00:07:58,030 --> 00:07:59,860
Se fijan porque ya lo tiene por defecto.

103
00:08:00,610 --> 00:08:02,680
De hecho, voy a cambiar un poco el ejemplo.

104
00:08:04,400 --> 00:08:11,030
Persona lo dejo tal cual, un constructor vacío y con parámetro voy alumno, voy a quitar el constructor

105
00:08:11,030 --> 00:08:11,540
vacío.

106
00:08:13,990 --> 00:08:15,370
Voy a quitar el súper.

107
00:08:16,690 --> 00:08:19,210
Se fijan y hoy no me da error.

108
00:08:20,510 --> 00:08:23,480
Porque el padre tiene el conductor vacío.

109
00:08:24,200 --> 00:08:26,210
Entonces se invoca de forma automática acá.

110
00:08:26,510 --> 00:08:27,940
El error está en almente.

111
00:08:28,040 --> 00:08:30,130
El error está acá, incluso acá.

112
00:08:30,140 --> 00:08:32,930
Podría quitar este para que no me de error acá.

113
00:08:33,880 --> 00:08:38,740
Entonces es muy importante tener claro este concepto de los constructores y los parámetros.

114
00:08:38,950 --> 00:08:43,990
Entonces, para que el hijo pueda invocar un constructor con shuper del padre, ya sea de forma automática,

115
00:08:44,080 --> 00:08:48,550
vacío, implícito o de forma ilicito con parámetros, tiene que ser compatible.

116
00:08:48,700 --> 00:08:50,770
Es decir, el padre tiene que tener ese constructor.

117
00:08:50,980 --> 00:08:56,370
Bien, continuamos la siguiente clase con constructores pasando parámetros a antes que se olvida esto

118
00:08:56,380 --> 00:08:56,890
de acá.

119
00:08:57,310 --> 00:08:58,360
La idea que tuviera acá.

120
00:08:59,230 --> 00:08:59,830
Perfecto.

121
00:09:00,100 --> 00:09:01,750
Bien, esto lo voy a quitar por ahora.

122
00:09:02,170 --> 00:09:02,950
La otra clase.

123
00:09:02,990 --> 00:09:04,420
Trabajamos con parámetros.

124
00:09:04,480 --> 00:09:05,170
Nos vemos.
