1
00:00:00,530 --> 00:00:06,130
Bien vamos a continuar con nuestro ejercicio vamos a crear ahora una clase llamada ejemplo herencia

2
00:00:06,320 --> 00:00:08,430
ni derecho ni un atlas.

3
00:00:08,430 --> 00:00:14,050
Y la clase se llama ejemplo herencia dejamos los demás valores por default y damos en finalizar

4
00:00:18,520 --> 00:00:27,000
y vamos a hacer lo siguiente Vamos a heredar un método main damos formato y vamos a crear ahora un nuevo

5
00:00:27,000 --> 00:00:28,750
objeto de tipo empleado.

6
00:00:28,980 --> 00:00:34,320
El objeto de tipo Persona de momento no lo vamos a trabajar ya que nos interesa trabajar con las clases

7
00:00:34,380 --> 00:00:39,780
hijas pero también podrían crear objetos de tipo personal sin ningún problema así que vamos a crear

8
00:00:40,140 --> 00:00:48,240
una variable de tipo ampliado llamada empleado 1 y ahora vamos a utilizar el constructor de la clase

9
00:00:48,300 --> 00:00:52,650
empleado el que recibe el atributo de nombre y sueldo.

10
00:00:53,700 --> 00:01:03,000
Ese es el constructor que vamos a utilizar así que creamos un nuevo objeto de tipo empleado y pasamos

11
00:01:03,010 --> 00:01:14,620
los valores de nombre Juan y de sueldo 5000 Punto y Coma y Podemos se vaques este momento funciona todo

12
00:01:14,660 --> 00:01:23,640
sin problemas y si mandamos a imprimir este objeto imprimimos directamente la variable empleado 1 vamos

13
00:01:23,640 --> 00:01:25,440
a guardar cambios y ejecutamos

14
00:01:28,210 --> 00:01:34,660
así que Podemos se va a la salida tenemos el valor del objeto persona persona con nombre Juan y podemos

15
00:01:34,660 --> 00:01:37,360
observar que el género no sea inicializar.

16
00:01:37,660 --> 00:01:43,450
La edad es igual a cero y la dirección también nos inicializar tiene el valor de Nul y posteriormente

17
00:01:43,450 --> 00:01:50,680
tenemos los valores directamente de la clase empleado hoy día empleado igual a 1 y el sueldo de 5000.

18
00:01:50,740 --> 00:01:56,230
Recordemos que este es un solo objeto lo estamos dividiendo lo estamos separando para que nos quede

19
00:01:56,230 --> 00:01:58,430
claro cómo es que funciona la herencia.

20
00:01:58,480 --> 00:02:04,740
Sin embargo en memoria es un solo objeto de tipo empleado que hereda las características de la clase

21
00:02:04,750 --> 00:02:10,510
persona que es la clase padre y con eso podemos llevar que no sea una inicializar o algunos elementos

22
00:02:10,720 --> 00:02:13,590
solamente se alisó el nombre de Juan.

23
00:02:13,600 --> 00:02:17,340
Esto debido a que mandamos a llamar el constructor de la clase padre.

24
00:02:17,530 --> 00:02:23,080
Esto debido a que mandamos a llamar el constructor de la clase padre dentro del constructor de empleado.

25
00:02:23,080 --> 00:02:27,290
Por ello es que únicamente se inicia hizó el atributo de nombre de la clase padre.

26
00:02:27,310 --> 00:02:32,040
Ahora cómo podemos hacer para también asignar valores a esos atributos restantes.

27
00:02:32,110 --> 00:02:38,200
Podríamos mandar a llamar el constructor completo y pasar argumentos también a este constructor o también

28
00:02:38,200 --> 00:02:45,100
lo que podemos hacer es hacer uso de los métodos heredados de la clase persona así que podríamos poner

29
00:02:45,100 --> 00:02:49,640
empleado 1 punto Zet edad.

30
00:02:49,740 --> 00:02:54,150
Este método no está definido dentro de la clase de empleado sino que está definido dentro de la clase

31
00:02:54,150 --> 00:02:54,910
persona.

32
00:02:54,990 --> 00:03:00,180
Sin embargo como lo estamos heredando entonces lo podemos mandar a llamar ya que es un método público

33
00:03:00,270 --> 00:03:03,720
y se hereda de manera automática a la clase empleado.

34
00:03:04,020 --> 00:03:08,120
Así que podemos poner el valor de edad por ejemplo 28 años

35
00:03:11,350 --> 00:03:16,730
podemos poner el género en este caso masculino

36
00:03:20,560 --> 00:03:24,530
y también la dirección que es una cadena.

37
00:03:24,860 --> 00:03:32,600
Por ejemplo lomás número 13 cualquier valor que ustedes deseen guardamos cambios y ejecutamos

38
00:03:35,630 --> 00:03:40,830
y podemos llevar el proceso hacia la inicializar ya los valores no solamente de nombre sino también

39
00:03:40,830 --> 00:03:42,990
de género edad dirección.

40
00:03:43,050 --> 00:03:48,330
Todo esto dentro de los atributos de la clase padre persona y también la clase empleado ya contiene

41
00:03:48,540 --> 00:03:50,170
cada uno de sus valores.

42
00:03:50,400 --> 00:03:54,990
Bien vamos a ejecutar paso a paso este código vamos a poner un punto de ruptura.

43
00:03:54,990 --> 00:04:01,190
Damos un derecho de bufidos y vamos a presionar F7 para entrar al detalle del constructor de la clase

44
00:04:01,190 --> 00:04:07,800
empleado podemos observar que lo primero que se manda llamar es el constructor de la clase empleado.

45
00:04:07,800 --> 00:04:14,190
Sin embargo para poder terminar de crear este objeto empleado necesitamos terminar de crear el objeto

46
00:04:14,190 --> 00:04:15,440
de la clase padre.

47
00:04:15,510 --> 00:04:21,270
Por ello es que la primer llamada debe de ser la llamada al constructor de la clase padre en dado caso

48
00:04:21,270 --> 00:04:22,920
de que esta línea no exista.

49
00:04:22,920 --> 00:04:28,170
Entonces se va a mandar a llamar de manera automática al constructor de la clase padre sin argumentos

50
00:04:28,650 --> 00:04:34,560
esto para que termine de crear el objeto de la clase padre y posteriormente regresa a terminar de construir

51
00:04:34,860 --> 00:04:36,410
el objeto de la clase e hija.

52
00:04:36,600 --> 00:04:42,960
Así que por ello es importante conocer el orden de creación de los objetos así que presionamos F7 y

53
00:04:42,960 --> 00:04:48,240
ahora ya estamos dentro de la clase padre estamos en el constructor de la clase padre para inicializar

54
00:04:48,300 --> 00:04:56,520
el atributo de nombre presionamos f 8 y de nueva cuenta f 8 y con esto ya se inicializar el atributo

55
00:04:56,520 --> 00:05:03,120
de la clase padre terminamos de ejecutar el constructor de la clase padre y podemos observar que continuamos

56
00:05:03,120 --> 00:05:07,740
exactamente después de la línea de haber llamado al constructor de la clase padre.

57
00:05:07,890 --> 00:05:14,220
Recordemos que memoria es un solo objeto el objeto de tipo empleado pero contiene las características

58
00:05:14,310 --> 00:05:15,580
de la clase padre.

59
00:05:15,720 --> 00:05:21,960
En este caso la clase de persona vamos a continuar si presionamos f 8 entonces se inicializar el atributo

60
00:05:22,020 --> 00:05:27,810
Heydi ampliado utilizando nuestra variable estática Contador empleado en este caso se le asigna el valor

61
00:05:27,810 --> 00:05:33,980
de 1 y finalmente se asigna el valor de sueldo al atributo de sueldo.

62
00:05:33,980 --> 00:05:37,580
Presionamos F8 y regresamos a nuestra clase de prueba.

63
00:05:37,580 --> 00:05:44,420
Ejemplo herencia presionamos F8 y en este momento ya se ha asignado ya se ha creado un objeto de tipo

64
00:05:44,420 --> 00:05:50,060
empleado en memoria pero debido a que hemos definido el método string ya no observamos la referencia

65
00:05:50,090 --> 00:05:56,090
en memoria sino que ahora observamos los valores del método autodestruyen pero este objeto ya se ha

66
00:05:56,090 --> 00:06:00,230
creado en memoria tenemos un objeto de tipo empleado

67
00:06:05,350 --> 00:06:09,970
pero internamente tiene las características de la clase padre persona

68
00:06:12,820 --> 00:06:18,520
y a su vez esta clase persona tiene de manera interna las características de la clase Obie

69
00:06:21,730 --> 00:06:27,190
así que ese es el orden de creación de los objetos se crea nuestro objeto empleado pero se debe determinar

70
00:06:27,190 --> 00:06:32,800
de inicializar el objeto persona y a su vez el objeto persona también manda llamar el constructor de

71
00:06:32,800 --> 00:06:34,570
la clase Object.

72
00:06:34,570 --> 00:06:40,180
Aquí es donde se crea el espacio en memoria se asigna la referencia en memoria y termina de asignar

73
00:06:40,180 --> 00:06:45,160
las características de la clase padre a la clase persona y finalmente termina de asignar las características

74
00:06:45,400 --> 00:06:51,250
de la clase empleado pero es un solo objeto en memoria que internamente tiene las características de

75
00:06:51,250 --> 00:06:58,060
las clases padre así que por ello nuestra variable empleado apunta a un objeto de tipo empleado con

76
00:06:58,060 --> 00:07:06,090
los atributos de Heydi empleado 1 sueldo igual a 5 000 e internamente contiene más características como

77
00:07:06,100 --> 00:07:14,240
son las características de Static el contador de empleado con el valor de 1 y las características heredadas

78
00:07:14,480 --> 00:07:17,370
como es el atributo de nombre con el valor de Juan.

79
00:07:17,540 --> 00:07:22,870
El género que no se inicializar la edad tampoco y la dirección que tampoco se inicializar.

80
00:07:22,940 --> 00:07:25,910
Eso es lo que vamos a hacer precisamente en estas líneas.

81
00:07:25,910 --> 00:07:33,350
Así que si presionamos esta línea se manda llamar el método presionemos F7 para ver dónde está este

82
00:07:33,350 --> 00:07:34,580
método Zet edad.

83
00:07:34,790 --> 00:07:41,360
Así que presionamos F7 y podemos ver que este método está dentro de la clase de persona así que este

84
00:07:41,360 --> 00:07:47,000
método público se ha heredado y por ello es que lo podemos mandar a llamar desde la clase empleados

85
00:07:47,000 --> 00:07:53,810
sin ningún problema presionamos F8 se termina de asignar el valor de edad al atributo de la clase padre

86
00:07:55,920 --> 00:08:02,970
y podemos observar que ahora el valor edad heredado en nuestra clase empleado contiene el valor de 28

87
00:08:03,240 --> 00:08:09,120
así que podemos ver que la variable empleado de manera interna puede acceder a las características heredadas

88
00:08:09,240 --> 00:08:10,210
de la clase padre.

89
00:08:10,260 --> 00:08:16,860
En este caso de la clase persona y así podemos continuar asignamos el valor de género en este caso ya

90
00:08:16,860 --> 00:08:21,280
se ha asignado el valor de masculino el carácter M.

91
00:08:21,660 --> 00:08:29,360
Posteriormente asignamos el valor de lo +13 en la dirección y si mandamos a imprimir entonces podemos

92
00:08:29,360 --> 00:08:34,940
observar ya estos cambios el objeto persona se ha terminado de asignar cada uno de sus valores.

93
00:08:34,940 --> 00:08:41,580
Como podemos observar y también los valores de la clase empleado pero recordemos que es un solo objeto

94
00:08:41,580 --> 00:08:47,620
de memoria bien vamos a detener esta ejecución paso a paso con eso terminamos.

95
00:08:47,700 --> 00:08:53,040
Y por último vamos a crear un objeto de tipo cliente simplemente para terminar de poner en práctica

96
00:08:53,040 --> 00:08:54,030
este ejercicio.

97
00:08:54,210 --> 00:08:59,370
Pero con esto ya debería quedar claro el concepto de herencia así que ahora creamos otro objeto de tipo

98
00:08:59,370 --> 00:09:10,620
cliente y son exactamente los mismos pasos mandamos a llamar el constructor de la clase cliente y en

99
00:09:10,620 --> 00:09:16,190
este caso el valor de fecha de registro vamos a crear un nuevo objeto de tipo fecha.

100
00:09:16,470 --> 00:09:21,720
Así que por ello utilizamos la palabra reservada NIU y posteriormente la clase Daito ya que el argumento

101
00:09:21,720 --> 00:09:27,240
que estamos recibiendo también es de tipo Daito y posteriormente proporcionamos el valor de Chú para

102
00:09:27,240 --> 00:09:29,970
indicar que este cliente es un cliente VIP.

103
00:09:30,480 --> 00:09:36,060
Sin embargo esta clase de EyT debemos de importarla ya que está en otro paquete en otra carpeta así

104
00:09:36,060 --> 00:09:41,880
que damos clic y seleccionamos import ya va punto y útil punto y posteriormente vamos a ver a detalle

105
00:09:41,880 --> 00:09:46,920
el tema de paquetes pero de momento deben de agregar esta sintaxis este importe para poder utilizar

106
00:09:46,950 --> 00:09:49,660
esta clase que se encuentra en otro paquete.

107
00:09:49,740 --> 00:09:52,080
En este caso en el paquete de Java punto y útil.

108
00:09:52,260 --> 00:09:56,970
Así que con esto ya hemos creado nuestro objeto cliente de manera interna todos los valores de la clase

109
00:09:56,970 --> 00:10:03,240
persona que es la clase padre no se le ha asignado ningún valor si vamos a este constructor podemos

110
00:10:03,240 --> 00:10:08,970
observar que no hay ninguna llamada al método Super sin embargo como hemos comentado se va a mandar

111
00:10:08,970 --> 00:10:15,260
a llamar de manera automática el constructor súper vació de la clase padre.

112
00:10:15,540 --> 00:10:18,870
Por ello es que debemos de tener definido este constructor.

113
00:10:18,900 --> 00:10:25,110
De lo contrario nos va a marcar error ya que como hemos comentado si no tenemos la llamada a Super dentro

114
00:10:25,200 --> 00:10:30,000
de nuestro constructor de la clase e hija entonces en automático se van a llamar el constructor de la

115
00:10:30,000 --> 00:10:37,300
clase padre vacío vamos a ponerlo entre comentarios para observar este error y podemos llevar que en

116
00:10:37,300 --> 00:10:44,650
este caso nos manda un error de que no ha encontrado un constructor adecuado dentro de la clase de persona

117
00:10:44,980 --> 00:10:51,760
es decir el constructor sin argumentos así que o mandamos a llamar un constructor adecuado de la clase

118
00:10:51,760 --> 00:10:58,900
padre o definimos el constructor vació en la clase padre y debido a que agregamos un constructor con

119
00:10:58,900 --> 00:11:03,130
un argumento entonces el compilador ya no agrega este constructor vacío.

120
00:11:03,130 --> 00:11:09,200
Por ello es que lo debemos de agregar manualmente así que con eso estamos siendo nuestro objeto cliente

121
00:11:09,680 --> 00:11:17,200
y podemos mandarlo a imprimir imprimimos los valores de nuestro objeto cliente 1 guardamos cambios y

122
00:11:17,200 --> 00:11:23,580
ejecutamos y podemos observar que ya tenemos los valores en nuestro objeto cliente.

123
00:11:23,580 --> 00:11:28,730
Sin embargo los valores del objeto persona el nombre es igual a NULL el género es nulo.

124
00:11:28,830 --> 00:11:35,040
La edad también es cero la dirección es Null y al cliente se le asignó el cliente de uno y también un

125
00:11:35,040 --> 00:11:37,320
valor de fecha de registro.

126
00:11:37,320 --> 00:11:39,810
Así que para ello se utilizó el objeto de EyT.

127
00:11:39,840 --> 00:11:45,300
Para ello creamos un nuevo objeto de tipo fecha para asignarle precisamente un nuevo objeto de tipo

128
00:11:45,300 --> 00:11:46,800
fecha.

129
00:11:46,800 --> 00:11:51,810
Si quisiéramos asignar valores a los atributos de la clase padre podemos hacer lo mismo que hicimos

130
00:11:51,810 --> 00:11:53,810
en el objeto empleado 1.

131
00:11:54,000 --> 00:12:01,880
Podemos mandar a llamar los métodos públicos como puede ser el nombre para asignarle por ejemplo el

132
00:12:01,880 --> 00:12:07,310
valor de Carla y así sucesivamente podríamos modificar todos los valores de la clase padre utilizando

133
00:12:07,310 --> 00:12:14,660
los métodos públicos los métodos Zet para modificar los valores guardamos cambios y ejecutamos y podemos

134
00:12:14,660 --> 00:12:22,020
observar que ya tenemos en el atributo de nombre el valor de Carla dentro de nuestro objeto de tipo

135
00:12:22,020 --> 00:12:28,110
cliente bien vamos a ejecutar paso a paso simplemente para que veamos también la construcción de este

136
00:12:28,110 --> 00:12:28,920
objeto.

137
00:12:28,920 --> 00:12:35,980
Ponemos un punto de ruptura en la creación del objeto cliente y seleccionamos de Buffy bien y empezamos

138
00:12:35,980 --> 00:12:38,930
con nuestro modo debug presionamos F.

139
00:12:39,310 --> 00:12:44,350
Esto crea de manera automática nuestro objeto de EyT si es que nos llevará a la construcción de este

140
00:12:44,350 --> 00:12:50,950
objeto para salirnos de la ejecución de ese objeto de este constructor podemos presionar este auto pero

141
00:12:50,950 --> 00:12:56,680
en este caso no nos mandó al detalle de la construcción del objeto Daito así que vamos a continuar presionamos

142
00:12:56,680 --> 00:12:59,200
F7 o pintura.

143
00:12:59,410 --> 00:13:05,560
Y aquí la primera línea no va a ser la asignación de los atributos sino que va a mandar a llamar el

144
00:13:05,560 --> 00:13:12,590
constructor de la clase padre vamos a presionar F7 y podemos llevar que manda llamar el constructor

145
00:13:12,590 --> 00:13:19,130
vació de manera automática así que el compilador necesita primero terminar de crear el objeto persona

146
00:13:19,910 --> 00:13:23,090
para poder a su vez crear el objeto hijo.

147
00:13:23,090 --> 00:13:31,320
Y si presionamos aquí F7 entonces nos lleva al constructor de la clase obvie ya que como hemos comentado

148
00:13:31,490 --> 00:13:37,620
si no definimos otra cosa dentro de nuestra clase la definición de la clase en automático extiende la

149
00:13:37,620 --> 00:13:38,630
clase obvien.

150
00:13:38,760 --> 00:13:44,190
Por ello es que nos llevó al constructor de la clase obvie y aquí en este caso este constructor ya no

151
00:13:44,190 --> 00:13:48,990
es un código que nosotros podamos observar sino que ya es parte de las librerías de IAVA.

152
00:13:49,020 --> 00:13:56,940
Vamos a salirnos de la ejecución de este código presionando este auto y regresamos al constructor vació

153
00:13:56,990 --> 00:13:58,410
de nuestra clase padre.

154
00:13:58,410 --> 00:14:02,130
En este momento ya la clase Objet hizo su trabajo.

155
00:14:02,130 --> 00:14:09,280
Posteriormente termina de inicializar las variables de la clase persona vamos a continuar con f 8 y

156
00:14:09,280 --> 00:14:15,880
regresamos a la construcción de nuestro objeto cliente y empieza a asignar los atributos de nuestra

157
00:14:15,880 --> 00:14:24,100
clase así que presionamos f 8 y podemos observar que en este caso Diz ya está apuntando a un objeto

158
00:14:24,100 --> 00:14:29,850
de tipo cliente y ya modificó los atributos de Heydi cliente con el valor de 1.

159
00:14:30,140 --> 00:14:38,480
La fecha de registro también ya le asignó un valor Viv es un Juliano con el valor de Chú y también tenemos

160
00:14:38,480 --> 00:14:45,720
valores heredados en este caso los valores heredados como hemos visto no se les ha asignado ningún valor

161
00:14:45,990 --> 00:14:51,750
así que todos los valores tienen su valor por Defour pero ya se ha creado en memoria el espacio para

162
00:14:51,750 --> 00:14:53,730
cada uno de estos atributos.

163
00:14:53,730 --> 00:14:59,430
Por ello es que primero se mandó a llamar cada uno de los constructores de la clase padre para reservar

164
00:14:59,460 --> 00:15:05,640
espacio de memoria para cada uno de estos atributos y una vez que termina de asignar espacio de memoria

165
00:15:05,640 --> 00:15:12,810
para cada uno de los atributos de las clases padre entonces puede continuar con la clase e hija así

166
00:15:12,810 --> 00:15:17,970
que vamos a continuar y podemos observar que con esto se ha terminado de crear nuestro objeto cliente

167
00:15:19,970 --> 00:15:23,230
y podemos acceder en este caso al método shed nombre.

168
00:15:23,470 --> 00:15:30,800
Y si presionamos F7 nos lleva a la clase padre ya que este método se está heredando desde la clase padre

169
00:15:31,930 --> 00:15:38,500
presionamos f 8 se está asignando el valor de nombre y ahora ya tenemos el valor de nombre dentro del

170
00:15:38,500 --> 00:15:47,350
atributo heredado de la clase padre presionamos f 8 y de nueva cuenta f 8 y podemos observar ya los

171
00:15:47,350 --> 00:15:52,360
valores en el objeto de tipo cliente tenemos los valores de nombre Carla.

172
00:15:52,360 --> 00:15:57,060
Los demás valores no los hemos inicializar solo podrían inicializar sin ningún problema mándanos llamarlos

173
00:15:57,100 --> 00:16:00,990
métodos etc. Y tenemos también los valores de cliente igual a 1.

174
00:16:01,120 --> 00:16:06,740
La fecha de registro y también el valor de Viv igual a bien así.

175
00:16:06,760 --> 00:16:11,810
Con esto hemos puesto en práctica el concepto de herencia a su vez también vimos el orden de construcción

176
00:16:11,810 --> 00:16:15,570
de nuestros objetos cuando estamos trabajando con el concepto de herencia.

177
00:16:15,650 --> 00:16:20,780
Todo esto lo debemos de tener claro ya que este tipo de conceptos los vamos a utilizar de manera frecuente

178
00:16:20,780 --> 00:16:23,050
cuando estamos trabajando con Java.

179
00:16:23,210 --> 00:16:26,240
Eso es solo por esta elección y nos vemos en el siguiente vídeo.

180
00:16:26,250 --> 00:16:26,840
Saludos.
