1 00:00:00,820 --> 00:00:12,939 Bueno, pues venga, entonces, esta ya no tenemos ni que pensar porque nos dice la entidad que va a usar esta aplicación y tendrá un empleado, porque va a haber empleados en esa aplicación. 2 00:00:12,939 --> 00:00:22,579 Lo que pasa es que a algunos de los empleados se les va a tratar de forma especial en cuanto a las funcionalidades que se pueden hacer con ellos y esos serán los gerentes. 3 00:00:22,579 --> 00:00:25,079 entonces podría haber una clase empleado y otra gerente 4 00:00:25,079 --> 00:00:27,000 por libre, pero como 5 00:00:27,000 --> 00:00:29,019 identificamos cuando analizamos el problema 6 00:00:29,019 --> 00:00:30,980 identificamos que gerente también 7 00:00:30,980 --> 00:00:33,020 es un empleado y por tanto 8 00:00:33,020 --> 00:00:34,579 todo lo de empleado le interesa 9 00:00:34,579 --> 00:00:36,780 pues identificamos que hay una relación de 10 00:00:36,780 --> 00:00:39,039 vale, y luego ya seguimos 11 00:00:39,039 --> 00:00:40,679 identificando cosas, pero vamos a empezar 12 00:00:40,679 --> 00:00:42,859 en cuanto a departamento 13 00:00:42,859 --> 00:00:44,619 empresa, empleado temporal, bla bla bla 14 00:00:44,619 --> 00:00:46,899 empezamos con empleado y gerente para ver lo de los 15 00:00:46,899 --> 00:00:48,679 constructores, pues venga 16 00:00:48,679 --> 00:00:50,840 esta clase ya nos la dan hecha, atributos 17 00:00:50,840 --> 00:00:52,719 o propiedades, nombre, salario 18 00:00:52,719 --> 00:00:54,899 y fecha, pues venga 19 00:00:54,899 --> 00:01:17,560 nombre 20 00:01:17,560 --> 00:01:20,620 salario 21 00:01:20,620 --> 00:01:24,180 y la fecha 22 00:01:24,180 --> 00:01:25,500 de contratación 23 00:01:25,500 --> 00:01:34,590 y ya está, date, pues tenemos 24 00:01:34,590 --> 00:01:36,650 que pronunciarnos sobre qué clase 25 00:01:36,650 --> 00:01:38,609 fecha nos interesa, si esta 26 00:01:38,609 --> 00:01:40,469 o la time 27 00:01:40,469 --> 00:01:42,510 o la clase local date 28 00:01:42,510 --> 00:01:44,390 de java time, bueno, si es para 29 00:01:44,390 --> 00:01:45,909 cosas básicas con fechas 30 00:01:45,909 --> 00:01:47,890 pues esta misma y ya está 31 00:01:47,890 --> 00:01:49,870 entonces los 32 00:01:49,870 --> 00:01:52,250 empleados, le podemos poner lo de siempre 33 00:01:52,250 --> 00:01:52,989 un constructor 34 00:01:52,989 --> 00:01:59,780 Sí, porque para hacer 35 00:01:59,780 --> 00:02:01,280 las cosas básicas de meter fechas 36 00:02:01,280 --> 00:02:03,719 comparadas unas con otras, va a sobrar 37 00:02:03,719 --> 00:02:25,949 Vale, pues va a haber empleados 38 00:02:25,949 --> 00:02:27,689 y de los empleados nos interesa esto 39 00:02:27,689 --> 00:02:30,250 Por ahora no 40 00:02:30,250 --> 00:02:32,830 identificamos ninguna funcionalidad 41 00:02:32,830 --> 00:02:33,849 en particular 42 00:02:33,849 --> 00:02:35,789 qué hacer con los empleados 43 00:02:35,789 --> 00:02:37,610 según estudiemos la aplicación y la veamos 44 00:02:37,610 --> 00:02:39,710 pues a lo mejor interesa meter ahí alguna funcionalidad 45 00:02:39,710 --> 00:02:41,569 para hacer en concreto con los empleados 46 00:02:41,569 --> 00:02:43,689 pero bueno, por ahora hemos identificado 47 00:02:43,689 --> 00:02:45,490 que hay empleados 48 00:02:45,490 --> 00:02:47,409 con funcionalidades específicas 49 00:02:47,409 --> 00:02:49,189 para ellos y con datos específicos 50 00:02:49,189 --> 00:02:50,530 que también son 51 00:02:50,530 --> 00:02:53,430 gerentes, pero comparten 52 00:02:53,430 --> 00:02:53,990 los datos 53 00:02:53,990 --> 00:02:57,389 de nombre, salida y fecha, con lo cual 54 00:02:57,389 --> 00:02:59,449 hacemos gerente y al 55 00:02:59,449 --> 00:03:01,729 identificar eso, la hacemos heredera y ya está 56 00:03:01,729 --> 00:03:18,710 vale, pues 57 00:03:18,710 --> 00:03:21,050 bueno 58 00:03:21,050 --> 00:03:23,750 en estas aplicaciones que son cortas 59 00:03:23,750 --> 00:03:24,449 es difícil 60 00:03:24,449 --> 00:03:27,330 que al final nos quede un diseño extraño 61 00:03:27,330 --> 00:03:29,870 pero a veces cuando empezamos 62 00:03:29,870 --> 00:03:31,750 a tener un montón de clases de cosas 63 00:03:31,750 --> 00:03:34,030 y tratamos de reformular el código 64 00:03:34,030 --> 00:03:36,169 el diseño para que quede mejor 65 00:03:36,169 --> 00:03:37,270 pues nos quedan cosas raras 66 00:03:37,270 --> 00:03:39,949 entonces como verifica uno que no le ha quedado una cosa rara 67 00:03:39,949 --> 00:03:40,550 en su diseño 68 00:03:40,550 --> 00:03:42,870 pues cuando tú ves eso tienes que poder decir 69 00:03:42,870 --> 00:03:46,330 oye un gerente es un empleado 70 00:03:46,330 --> 00:03:48,389 si esa frase tiene sentido 71 00:03:48,389 --> 00:03:50,210 Entonces como esa frase tiene sentido 72 00:03:50,210 --> 00:03:51,990 Que un gerente sea un empleado 73 00:03:51,990 --> 00:03:53,469 Esto de aquí tiene sentido 74 00:03:53,469 --> 00:03:55,710 Vale, gerente añade algo 75 00:03:55,710 --> 00:03:57,409 Pues sí, hemos dicho que añadía 76 00:03:57,409 --> 00:03:58,610 Un 77 00:03:58,610 --> 00:04:01,330 Un bonus 78 00:04:01,330 --> 00:04:02,310 Que es 79 00:04:02,310 --> 00:04:05,389 Un extra en el sueldo 80 00:04:05,389 --> 00:04:08,229 Vale, entonces como 81 00:04:08,229 --> 00:04:09,770 Empleado 82 00:04:09,770 --> 00:04:12,449 Tiene ahora ya subclases 83 00:04:12,449 --> 00:04:13,990 Tiene hijas, tiene herederas 84 00:04:13,990 --> 00:04:15,289 Tiene lo que sea 85 00:04:15,289 --> 00:04:17,029 ¿Eh? 86 00:04:18,389 --> 00:04:20,389 y gerente tiene un padre. 87 00:04:21,029 --> 00:04:22,730 Vamos a ponerle a este protected, 88 00:04:23,430 --> 00:04:25,790 porque le va a facilitar a lo mejor la vida al gerente, 89 00:04:25,970 --> 00:04:29,550 el poder a su código, a sus métodos, 90 00:04:29,649 --> 00:04:31,509 poder acceder directamente a sus propiedades. 91 00:04:33,529 --> 00:04:33,689 ¿Vale? 92 00:04:33,750 --> 00:04:37,850 Entonces, si una clase va a tener subclases, 93 00:04:38,589 --> 00:04:40,410 pasar del private al protected, 94 00:04:40,410 --> 00:04:44,410 le arregla un poco la vida a las subclases, 95 00:04:44,529 --> 00:04:45,629 porque ahora ya la subclase, 96 00:04:45,790 --> 00:04:47,509 si lo necesita en algún método suyo, 97 00:04:47,509 --> 00:04:49,149 Puede poner directamente nombre 98 00:04:49,149 --> 00:04:51,310 Y no tiene que tirar todo el rato de getNombre 99 00:04:51,310 --> 00:04:52,689 Que es más largo y más confuso 100 00:04:52,689 --> 00:04:54,569 Bueno 101 00:04:54,569 --> 00:04:57,569 Vale, a ver 102 00:04:57,569 --> 00:04:59,410 Yo puede, dime 103 00:04:59,410 --> 00:05:06,889 A ver, sí 104 00:05:06,889 --> 00:05:08,750 Pero es que yo no he puesto ningún constructor 105 00:05:08,750 --> 00:05:09,290 Todavía 106 00:05:09,290 --> 00:05:13,430 Claro 107 00:05:13,430 --> 00:05:18,879 No adelantemos 108 00:05:18,879 --> 00:05:20,579 Los acontecimientos, en cualquier caso 109 00:05:20,579 --> 00:05:21,819 Tal y como he hecho yo empleado 110 00:05:21,819 --> 00:05:23,639 O sea 111 00:05:23,639 --> 00:05:26,620 Tú no has hecho un constructor 112 00:05:26,620 --> 00:05:28,279 Sin parámetros aquí, ¿verdad? 113 00:05:30,680 --> 00:05:31,120 Claro 114 00:05:31,120 --> 00:05:32,779 Entonces por eso te sale esa cosa roja 115 00:05:32,779 --> 00:05:33,680 ¿Vale? 116 00:05:35,839 --> 00:05:36,800 Por ahora sí 117 00:05:36,800 --> 00:05:38,620 Bueno 118 00:05:38,620 --> 00:05:39,740 ¿Deberías borrar qué? 119 00:05:42,379 --> 00:05:43,339 No, no, no 120 00:05:43,339 --> 00:05:44,899 El constructor que has hecho con cosas 121 00:05:44,899 --> 00:05:45,779 Va a ser utilísimo 122 00:05:45,779 --> 00:05:48,040 Lo que yo digo es que como normalmente hacemos 123 00:05:48,040 --> 00:05:50,300 Para aportarle flexibilidad a la aplicación 124 00:05:50,300 --> 00:05:52,040 uno con cosas y otro sin cosas 125 00:05:52,040 --> 00:05:53,540 pues que hagas los dos 126 00:05:53,540 --> 00:05:54,519 por ahora 127 00:05:54,519 --> 00:05:58,420 vale, a ver, podría ocurrir 128 00:05:58,420 --> 00:06:00,079 que yo en mi diseño 129 00:06:00,079 --> 00:06:01,660 en lo que sea, en mi paquete de clases 130 00:06:01,660 --> 00:06:04,160 que otros van a reutilizar, por lo que sea 131 00:06:04,160 --> 00:06:06,100 yo no quiera 132 00:06:06,100 --> 00:06:08,439 que alguien herede de mis clases 133 00:06:08,439 --> 00:06:10,500 bueno, pues lo puedo 134 00:06:10,500 --> 00:06:12,600 prohibir poniendo un modificador 135 00:06:12,600 --> 00:06:16,319 aquí, que es este 136 00:06:16,319 --> 00:06:18,360 vale 137 00:06:18,360 --> 00:06:21,920 este de aquí 138 00:06:21,920 --> 00:06:23,699 es decir 139 00:06:23,699 --> 00:06:26,759 si antes de la declaración de una clase 140 00:06:26,759 --> 00:06:28,319 uno pone final 141 00:06:28,319 --> 00:06:29,660 ¿vale? 142 00:06:30,199 --> 00:06:33,000 que es el único modificador extra que hemos incorporado 143 00:06:33,000 --> 00:06:34,779 porque hasta ahora siempre delante de class 144 00:06:34,779 --> 00:06:35,899 solamente teníamos opciones 145 00:06:35,899 --> 00:06:38,420 o no poner nada, poner public 146 00:06:38,420 --> 00:06:40,139 que ya sabemos la diferencia que hay 147 00:06:40,139 --> 00:06:42,980 el final prohíbe que alguien 148 00:06:42,980 --> 00:06:43,540 te herede 149 00:06:43,540 --> 00:06:46,939 la convierte en clase final de la jerarquía 150 00:06:46,939 --> 00:06:48,560 ¿entonces gerente ya no funciona? 151 00:06:48,959 --> 00:06:49,199 no 152 00:06:49,199 --> 00:06:51,819 se ha puesto rojita 153 00:06:51,819 --> 00:06:52,560 ¿vale? 154 00:06:53,699 --> 00:07:36,680 Entonces, lo vamos a incluir aquí, el modificador este final prohibiría crear subclases, heredar, lo que por traducción natural se llama extender la clase, vale, eso, como lo queráis llamar, prohibiría heredar, vale. 155 00:07:36,680 --> 00:07:38,579 bueno, pues ya tenemos incorporado esto de final 156 00:07:38,579 --> 00:07:40,660 vale, entonces final 157 00:07:40,660 --> 00:07:42,720 ya lo hemos usado 158 00:07:42,720 --> 00:07:44,019 a veces en 159 00:07:44,019 --> 00:07:46,899 pero lo hemos usado ahora mismo 160 00:07:46,899 --> 00:07:48,720 solamente lo hemos mencionado 161 00:07:48,720 --> 00:07:50,800 a veces para ponerlo en una 162 00:07:50,800 --> 00:07:51,540 variable 163 00:07:51,540 --> 00:07:54,740 vale, lo hemos dejado caer en algún momento 164 00:07:54,740 --> 00:07:56,040 vale 165 00:07:56,040 --> 00:07:58,639 en algún momento, por ejemplo, aquí 166 00:07:58,639 --> 00:08:02,779 en este primer ejemplo 167 00:08:02,779 --> 00:08:03,920 herencia que hemos hecho aquí 168 00:08:03,920 --> 00:08:09,850 vale, pues 169 00:08:09,850 --> 00:08:12,310 el modificador final, entonces que ya 170 00:08:12,310 --> 00:08:13,850 vamos a empezar a 171 00:08:13,850 --> 00:08:16,189 familiarizarnos con él 172 00:08:16,189 --> 00:08:18,009 el modificador final se puede poner 173 00:08:18,009 --> 00:08:20,329 delante de una propiedad 174 00:08:20,329 --> 00:08:22,250 delante 175 00:08:22,250 --> 00:08:24,129 de un método y delante 176 00:08:24,129 --> 00:08:24,810 de una clase 177 00:08:24,810 --> 00:08:28,350 delante de una propiedad, ya lo hemos mencionado 178 00:08:28,350 --> 00:08:29,310 alguna vez 179 00:08:29,310 --> 00:08:32,169 y cuando uno lo pone delante de una propiedad, ¿qué significa? 180 00:08:33,610 --> 00:08:34,009 significa 181 00:08:34,009 --> 00:08:35,970 que esa propiedad 182 00:08:35,970 --> 00:08:38,889 desde el momento en el que se le da su primer valor 183 00:08:38,889 --> 00:08:41,009 aquí en la inicialización ya se le puede cambiar 184 00:08:41,009 --> 00:08:42,350 es como poner constante 185 00:08:42,350 --> 00:08:44,750 la constante de toda la vida en los lenguajes de programación 186 00:08:44,750 --> 00:08:47,169 antiguos, los lenguajes de programación más antiguos 187 00:08:47,169 --> 00:08:48,730 decían, tenemos variables 188 00:08:48,730 --> 00:08:50,990 que son identificadores 189 00:08:50,990 --> 00:08:53,029 que se corresponden a un valor que tú puedes cambiar 190 00:08:53,029 --> 00:08:54,970 cuando te da la gana, la variable de toda la vida 191 00:08:54,970 --> 00:08:56,590 o constantes 192 00:08:56,590 --> 00:08:59,009 que es un identificador también que recibe 193 00:08:59,009 --> 00:09:00,950 un valor, pero eso no se va a cambiar 194 00:09:00,950 --> 00:09:02,830 en la vida, bueno pues 195 00:09:02,830 --> 00:09:04,990 la forma de incorporar las constantes en Java 196 00:09:04,990 --> 00:09:07,110 es hacer variables normales y corrientes 197 00:09:07,110 --> 00:09:09,309 y poner un final delante. 198 00:09:09,789 --> 00:09:11,090 Una vez usas el constructor 199 00:09:11,090 --> 00:09:13,370 y la inicializas, ya lo puedes... 200 00:09:13,370 --> 00:09:14,190 Efectivamente. 201 00:09:15,389 --> 00:09:16,769 Vale. Entonces, 202 00:09:17,149 --> 00:09:18,409 esta variable descuento 203 00:09:18,409 --> 00:09:21,009 ya nunca jamás se le podría cambiar el valor. 204 00:09:21,110 --> 00:09:22,409 Pero no hace falta ni inicializarla, ¿no? 205 00:09:22,409 --> 00:09:24,049 Porque imagino que ya cuando inicialices el objeto... 206 00:09:24,049 --> 00:09:25,129 Si es estática, sí. 207 00:09:28,460 --> 00:09:29,740 Digo, si no es estática. 208 00:09:30,519 --> 00:09:32,620 Si no es estática, creo que también tienes que 209 00:09:32,620 --> 00:09:34,820 inicializarla. Creo que te obliga 210 00:09:34,820 --> 00:09:36,059 en el momento en que la declaras. 211 00:09:36,940 --> 00:09:39,419 ¿Vale? O sea, una variable constante 212 00:09:39,419 --> 00:09:41,299 tú, en el momento en el que aparece, se supone 213 00:09:41,299 --> 00:09:43,399 que tienes que tener pensado qué valor es el que quieres que tenga. 214 00:09:44,460 --> 00:09:45,220 Claro. Entonces, 215 00:09:45,320 --> 00:09:47,360 le das ahí ese valor y ya nadie lo va a tocar. 216 00:09:48,179 --> 00:09:48,580 ¿Vale? 217 00:09:49,580 --> 00:09:50,019 Entonces, 218 00:09:50,580 --> 00:09:53,419 hemos usado ya 219 00:09:53,419 --> 00:09:55,840 variables constantes 220 00:09:55,840 --> 00:09:57,379 que no hemos creado 221 00:09:57,379 --> 00:09:58,039 nosotros. 222 00:09:59,639 --> 00:10:01,220 Pues, por ejemplo, cuando 223 00:10:01,220 --> 00:10:06,629 Eso, cuando 224 00:10:06,629 --> 00:10:08,549 Ah, bueno, es que aquí no me dejaron 225 00:10:08,549 --> 00:10:10,809 Hacerlo porque no estoy dentro de un método 226 00:10:10,809 --> 00:10:13,029 ¿Vale? 227 00:10:13,049 --> 00:10:14,610 Que fue cuando mencionamos lo de final 228 00:10:14,610 --> 00:10:16,990 Fue cuando vimos estas constantes 229 00:10:16,990 --> 00:10:18,690 Vale 230 00:10:18,690 --> 00:10:22,389 Es decir 231 00:10:22,389 --> 00:10:23,350 La clase math 232 00:10:23,350 --> 00:10:25,669 Como hace operaciones con pi 233 00:10:25,669 --> 00:10:27,750 Pues te crea una variable 234 00:10:27,750 --> 00:10:30,049 Pi por aquí, te crea una variable 235 00:10:30,049 --> 00:10:30,889 La que le da un valor 236 00:10:30,889 --> 00:10:32,610 Y le pone el final 237 00:10:32,610 --> 00:10:36,190 Porque a la variable pi no nos interesa cambiar el valor nunca 238 00:10:36,190 --> 00:10:37,049 Va a tener siempre ese 239 00:10:37,049 --> 00:10:39,610 No, no se pone 240 00:10:39,610 --> 00:10:41,909 Es el concepto de constante de toda la vida 241 00:10:41,909 --> 00:10:43,690 Pues aquí es poniendo un final delante 242 00:10:43,690 --> 00:10:45,950 Que suelen estar asociados a variables 243 00:10:45,950 --> 00:10:47,690 Estáticas, claro, porque 244 00:10:47,690 --> 00:10:49,590 Es donde tienen sentido 245 00:10:49,590 --> 00:10:51,889 Una constante, un valor que yo 246 00:10:51,889 --> 00:10:53,509 Puedo usar desde cualquier sitio 247 00:10:53,509 --> 00:10:55,350 Con un valor fijo porque me viene bien 248 00:10:55,350 --> 00:10:56,370 Para hacer operaciones 249 00:10:56,370 --> 00:10:59,149 Pues los finals suelen estar asociados a 250 00:10:59,149 --> 00:11:01,450 Constantes estáticas, da igual el orden que pongas 251 00:11:01,450 --> 00:11:03,029 Puedes poner static, final, final, static 252 00:11:03,029 --> 00:11:05,409 Vale, bueno, pues final es solamente eso 253 00:11:05,409 --> 00:11:09,250 Y cuando se pone en una clase 254 00:11:09,250 --> 00:11:11,370 Cuando se pone en una clase 255 00:11:11,370 --> 00:11:12,710 Tiene otro sentido 256 00:11:12,710 --> 00:11:14,809 Cuando se pone en una clase 257 00:11:14,809 --> 00:11:16,590 El sentido que tiene, tiene que ver con la herencia 258 00:11:16,590 --> 00:11:19,490 Y es, esta clase no puede tener subclases 259 00:11:19,490 --> 00:11:20,409 Ya se queda así 260 00:11:20,409 --> 00:11:23,490 Nadie la puede extender para hacer una modificación de ella 261 00:11:23,490 --> 00:11:27,330 En nuestro caso, si queremos extenderla 262 00:11:27,330 --> 00:11:28,529 O heredarla con gerente 263 00:11:28,529 --> 00:11:30,029 Este final no lo pondríamos 264 00:11:30,029 --> 00:11:30,830 ¿Tenemos un método? 265 00:11:31,769 --> 00:11:33,009 ¿Tenemos un método? 266 00:11:33,009 --> 00:11:35,809 vale, quieres que te lo diga ya 267 00:11:35,809 --> 00:11:37,450 vale, va a esperar a que llegue a un ejemplo 268 00:11:37,450 --> 00:11:39,190 en un método significa que no lo puedes sobrescribir 269 00:11:39,190 --> 00:11:41,450 que no se puede sobrescribir 270 00:11:41,450 --> 00:11:43,610 ah vale, aunque en una subclase crees otro método 271 00:11:43,610 --> 00:11:45,009 con el mismo nombre, claro, por ejemplo 272 00:11:45,009 --> 00:11:47,929 aquí en cliente, en el ejemplo herencia 273 00:11:47,929 --> 00:11:49,830 este 274 00:11:49,830 --> 00:11:51,690 método, en ejemplo herencia que habíamos 275 00:11:51,690 --> 00:11:53,710 hecho ayer, teníamos nuestro 276 00:11:53,710 --> 00:11:55,710 mostrar datos que sobrescribíamos 277 00:11:56,269 --> 00:11:57,409 ¿verdad? luego porque 278 00:11:57,409 --> 00:11:58,549 mostrar datos era diferente 279 00:11:58,549 --> 00:11:59,850 entonces 280 00:11:59,850 --> 00:12:03,169 yo puedo ponerle un final al método 281 00:12:03,169 --> 00:12:05,370 pero si le pongo un final 282 00:12:05,370 --> 00:12:06,049 al método 283 00:12:06,049 --> 00:12:09,169 ya no me deja 284 00:12:09,169 --> 00:12:11,009 sobrescribirlo, me dice 285 00:12:11,009 --> 00:12:13,009 no puedes sobrescribir un método final 286 00:12:13,009 --> 00:12:14,909 ¿vale? eso es lo que significa, entonces 287 00:12:14,909 --> 00:12:17,450 final es prohibir la herencia 288 00:12:17,450 --> 00:12:18,950 la prohíbes, oye 289 00:12:18,950 --> 00:12:21,009 si la pones en la clase, prohíbo 290 00:12:21,009 --> 00:12:23,169 una subclase, si lo pones 291 00:12:23,169 --> 00:12:25,250 en un método, prohíbo 292 00:12:25,250 --> 00:12:27,049 que sobrescribas este método en las 293 00:12:27,049 --> 00:12:28,830 subclases, ¿vale? 294 00:12:28,830 --> 00:12:33,559 eso significa final en un método 295 00:12:33,559 --> 00:12:39,649 y ya no se puede poner en más sitios 296 00:12:39,649 --> 00:12:41,549 en clases 297 00:12:41,549 --> 00:12:42,990 propiedades y métodos 298 00:12:42,990 --> 00:12:47,169 todo depende 299 00:12:47,169 --> 00:12:49,129 o sea, todo son herramientas 300 00:12:49,129 --> 00:12:51,169 posibilidades si tú las usas para que 301 00:12:51,169 --> 00:12:53,230 tus diseños tengan el mayor sentido posible 302 00:12:53,230 --> 00:12:55,129 y hay veces que sí que 303 00:12:55,129 --> 00:12:56,710 tiene sentido proteger de la herencia 304 00:12:56,710 --> 00:12:59,110 porque si algún desarrollador hereda de eso 305 00:12:59,110 --> 00:13:01,149 a lo mejor va a generar 306 00:13:01,149 --> 00:13:03,210 efectos secundarios en la aplicación 307 00:13:03,210 --> 00:13:05,169 que no son deseables, entonces la forma de 308 00:13:05,169 --> 00:13:06,529 protegerlo es así 309 00:13:06,529 --> 00:13:07,470 vale 310 00:13:07,470 --> 00:13:11,549 bueno, pues entonces ahora ya 311 00:13:11,549 --> 00:13:13,490 nos dice aquí, gerente tiene el bono 312 00:13:13,490 --> 00:13:15,570 y dice, vamos a utilizar 313 00:13:15,570 --> 00:13:17,190 constructores 314 00:13:17,190 --> 00:13:19,629 para empleado 315 00:13:19,629 --> 00:13:20,990 vale, pues 316 00:13:20,990 --> 00:13:23,070 nosotros 317 00:13:23,070 --> 00:13:25,409 como los constructores 318 00:13:25,409 --> 00:13:26,590 no se heredan 319 00:13:26,590 --> 00:13:28,350 como los constructores no se heredan 320 00:13:28,350 --> 00:13:30,590 pues haríamos el constructor 321 00:13:30,590 --> 00:13:32,529 como lo hemos hecho 322 00:13:32,529 --> 00:13:34,649 toda la vida, pues venga 323 00:13:34,649 --> 00:13:36,710 public, por ejemplo 324 00:13:36,710 --> 00:13:37,669 si es con parámetro 325 00:13:37,669 --> 00:13:40,730 public empleado y tendríamos que poner todos 326 00:13:40,730 --> 00:13:42,309 tendríamos que poner 327 00:13:42,309 --> 00:13:44,289 todos los propiedades que tiene, que tiene nombre 328 00:13:44,289 --> 00:13:46,350 salario, fecha 329 00:13:46,350 --> 00:13:56,379 salario 330 00:13:56,379 --> 00:14:04,840 y el bonus 331 00:14:04,840 --> 00:14:17,250 vale, y ahora 332 00:14:17,250 --> 00:14:23,100 eh, uy public 333 00:14:23,100 --> 00:14:24,860 empleado, que hago aquí, public gerente 334 00:14:24,860 --> 00:14:27,379 estoy haciendo el constructor de gerente 335 00:14:27,379 --> 00:14:29,059 y aquí pues 336 00:14:29,059 --> 00:14:30,100 iríamos una por una 337 00:14:30,100 --> 00:14:33,080 Pues dis.nombre 338 00:14:33,080 --> 00:14:34,299 Igual a nombre 339 00:14:34,299 --> 00:14:40,110 Dis.salario 340 00:14:40,110 --> 00:14:44,909 Pues 341 00:14:44,909 --> 00:14:46,850 Porque 342 00:14:46,850 --> 00:14:49,610 Aparte porque lo veamos bien 343 00:14:49,610 --> 00:14:51,570 Porque el 344 00:14:51,570 --> 00:14:52,690 El chivato del eclipse 345 00:14:52,690 --> 00:14:55,549 No sé si te ofrece aquí 346 00:14:55,549 --> 00:14:56,690 Los 347 00:14:56,690 --> 00:14:58,009 Heredados 348 00:14:58,009 --> 00:15:00,409 Entonces si no te los ofrece 349 00:15:00,409 --> 00:15:03,169 Pues no ganas nada 350 00:15:03,169 --> 00:15:07,029 Aunque a lo mejor cambiándolo a algo aquí te lo ofrecería también 351 00:15:07,029 --> 00:15:08,029 Pero bueno, da igual 352 00:15:08,029 --> 00:15:11,730 Dis fecha 353 00:15:11,730 --> 00:15:27,990 Y dis punto bonus igual a bonus 354 00:15:27,990 --> 00:15:31,509 Vale, aquí nos ha permitido acceder a la propiedad 355 00:15:31,509 --> 00:15:33,649 Nombre, salario, fecha, bonus 356 00:15:33,649 --> 00:15:34,490 A estas tres 357 00:15:34,490 --> 00:15:37,210 Nos ha permitido acceder a nombre, salario, fecha 358 00:15:37,210 --> 00:15:39,370 porque las hemos puesto 359 00:15:39,370 --> 00:15:40,909 protected aquí arriba 360 00:15:40,909 --> 00:15:43,730 vale, si no las hubiéramos 361 00:15:43,730 --> 00:15:45,590 puesto protected no podríamos hacer 362 00:15:45,590 --> 00:15:47,610 this.nombre, tendríamos que 363 00:15:47,610 --> 00:15:49,490 haber hecho set nombre 364 00:15:49,490 --> 00:15:51,309 nombre, set salario 365 00:15:51,309 --> 00:15:52,669 entonces como lo hemos puesto protected 366 00:15:52,669 --> 00:15:55,590 y claro, gracias a haberlo 367 00:15:55,590 --> 00:15:57,509 puesto protected pues nos queda 368 00:15:57,509 --> 00:15:58,210 un 369 00:15:58,210 --> 00:16:01,210 porque me aparece aquí este rojo todo el rato 370 00:16:01,210 --> 00:16:03,710 ah, porque el import 371 00:16:03,710 --> 00:16:04,149 de date 372 00:16:04,149 --> 00:16:12,330 entonces mejor poner el protected 373 00:16:12,330 --> 00:16:13,809 porque el aspecto que tiene el constructor 374 00:16:13,809 --> 00:16:16,250 es más parecido a lo que estamos acostumbrados 375 00:16:16,250 --> 00:16:18,389 vale, pero esto es un rollo 376 00:16:18,389 --> 00:16:20,350 patatero, que está muy bien 377 00:16:20,350 --> 00:16:21,669 o sea, esto está bien hecho 378 00:16:21,669 --> 00:16:24,009 pero es un rollo, porque imaginaos que tengo 379 00:16:24,009 --> 00:16:26,009 una jerarquía, ya no sólo 380 00:16:26,009 --> 00:16:28,090 de una 381 00:16:28,090 --> 00:16:30,049 superclase y una subclase, sino que además 382 00:16:30,049 --> 00:16:31,950 tengo otra subclase de esa 383 00:16:31,950 --> 00:16:33,389 subclase, y otra, y otra 384 00:16:33,389 --> 00:16:35,429 entonces tengo un montón de propiedades 385 00:16:35,429 --> 00:16:36,549 arriba, un montón 386 00:16:36,549 --> 00:16:39,549 que he ido heredando y heredando 387 00:16:39,549 --> 00:16:41,210 y este listado se me puede quedar 388 00:16:41,210 --> 00:16:43,149 interminable, entonces es un rollo 389 00:16:43,149 --> 00:16:44,990 vale, eso 390 00:16:44,990 --> 00:16:47,250 pues de cara simplemente a facilitarnos 391 00:16:47,250 --> 00:16:49,509 la escritura, de cara a facilitarnos la escritura 392 00:16:49,509 --> 00:16:51,029 resulta 393 00:16:51,029 --> 00:16:53,210 que yo desde una clase heredada 394 00:16:53,210 --> 00:16:57,830 desde una subclase o clase 395 00:16:57,830 --> 00:16:58,350 heredada 396 00:16:58,350 --> 00:17:01,870 puedo acceder 397 00:17:01,870 --> 00:17:03,289 a la 398 00:17:03,289 --> 00:17:05,670 llamándolo así, a la parte 399 00:17:05,670 --> 00:17:06,789 de instancia 400 00:17:06,789 --> 00:17:09,829 relacionada con lo superclase, lo voy a reducir 401 00:17:09,829 --> 00:17:18,740 aquí, con 402 00:17:18,740 --> 00:17:21,180 este término, con el término 403 00:17:21,180 --> 00:17:22,240 super, este de aquí 404 00:17:22,240 --> 00:17:24,539 que su sentido es parecido al de dis 405 00:17:24,539 --> 00:17:27,180 dis que significa, el objeto en el 406 00:17:27,180 --> 00:17:27,619 que estoy 407 00:17:27,619 --> 00:17:31,059 super significa el objeto padre 408 00:17:31,059 --> 00:17:33,059 no, porque no hay un objeto padre, solo hay 409 00:17:33,059 --> 00:17:34,359 un objeto, que es el que he instanciado 410 00:17:34,359 --> 00:17:37,299 pero super significa la parte tuya 411 00:17:37,299 --> 00:17:39,200 objeto, que está 412 00:17:39,200 --> 00:17:40,900 declarada en la superclase 413 00:17:40,900 --> 00:17:42,579 eso es lo que significa 414 00:17:42,579 --> 00:17:45,779 es decir, porque a veces nos guiamos un poco 415 00:17:45,779 --> 00:17:47,599 y creemos que si tenemos una clase 416 00:17:47,599 --> 00:17:49,660 una superclase y una subclase 417 00:17:49,660 --> 00:17:52,099 cuando instanciamos 418 00:17:52,099 --> 00:17:54,160 el objeto de la subclase es como si tuviéramos 419 00:17:54,160 --> 00:17:56,279 dos objetos, el de la superclase 420 00:17:56,279 --> 00:17:58,319 y el no, no, no, tenemos un único 421 00:17:58,319 --> 00:18:00,460 objeto, el objeto de la subclase 422 00:18:00,460 --> 00:18:01,559 con todas las propiedades 423 00:18:01,559 --> 00:18:04,079 lo que pasa es que están declaradas en dos partes distintas 424 00:18:04,079 --> 00:18:05,980 pero es un único objeto con todas las propiedades 425 00:18:05,980 --> 00:18:08,480 vale, pues super significa 426 00:18:08,480 --> 00:18:11,740 la parte de ese objeto 427 00:18:11,740 --> 00:18:14,380 pero que está declarada en la superclase 428 00:18:14,380 --> 00:18:16,339 entonces 429 00:18:16,339 --> 00:18:18,279 todo esto de aquí 430 00:18:18,279 --> 00:18:20,799 nos lo podríamos haber ahorrado 431 00:18:20,799 --> 00:18:23,299 haciendo una llamada super de esta manera 432 00:18:23,299 --> 00:18:25,400 como super es 433 00:18:25,400 --> 00:18:26,799 la superclase 434 00:18:26,799 --> 00:18:29,500 super es la llamada al método 435 00:18:29,500 --> 00:18:31,140 constructor de la superclase 436 00:18:31,140 --> 00:18:33,660 entonces si yo hago esto 437 00:18:33,660 --> 00:18:35,859 nombre 438 00:18:35,859 --> 00:18:38,140 salario 439 00:18:38,140 --> 00:18:41,130 y fecha 440 00:18:41,130 --> 00:18:42,250 contratación 441 00:18:42,250 --> 00:18:44,430 ¿Qué estamos haciendo? 442 00:18:45,269 --> 00:18:47,029 Estamos llamando al constructor 443 00:18:47,029 --> 00:18:48,569 De la subclase 444 00:18:48,569 --> 00:18:51,170 De la superclase, perdón 445 00:18:51,170 --> 00:18:59,220 No, porque el constructor 446 00:18:59,220 --> 00:19:01,079 De la superclase no tiene el bonus 447 00:19:01,079 --> 00:19:02,599 El bonus ya sí que lo tengo que hacer por libre 448 00:19:02,599 --> 00:19:12,140 Vale, entonces 449 00:19:12,140 --> 00:19:15,859 Esto nos facilita la escritura 450 00:19:15,859 --> 00:19:17,839 Porque decimos, vamos a ver 451 00:19:17,839 --> 00:19:20,720 Gerente, de todo lo que yo le paso 452 00:19:20,720 --> 00:19:21,920 Que le paso mil cosas 453 00:19:21,920 --> 00:19:24,119 las tres primeras 454 00:19:24,119 --> 00:19:26,599 ya hay un constructor 455 00:19:26,599 --> 00:19:29,099 en la superclase para inicializar las propiedades 456 00:19:29,099 --> 00:19:30,720 pues voy a llamar 457 00:19:30,720 --> 00:19:32,440 al constructor de la superclase 458 00:19:32,440 --> 00:19:33,220 que es este 459 00:19:33,220 --> 00:19:36,079 voy a llamar a este constructor 460 00:19:36,079 --> 00:19:38,400 que es este 461 00:19:38,400 --> 00:19:40,619 le paso esas tres 462 00:19:40,619 --> 00:19:43,000 y con esas tres ya está llamando este código 463 00:19:43,000 --> 00:19:44,779 es como si hiciéramos un copia y pega 464 00:19:44,779 --> 00:19:45,619 de ese código abajo 465 00:19:45,619 --> 00:19:48,640 que cuando son tres no es mucho 466 00:19:48,640 --> 00:19:51,039 pero si fueran veinte pues es un montón 467 00:19:51,039 --> 00:19:53,059 entonces siempre 468 00:19:53,059 --> 00:19:55,119 se programan los constructores 469 00:19:55,119 --> 00:19:57,180 de las subclases usando esto 470 00:19:57,180 --> 00:19:58,839 siempre, vale 471 00:19:58,839 --> 00:20:01,039 esto significa, llama 472 00:20:01,039 --> 00:20:03,460 al constructor de la superclase 473 00:20:03,460 --> 00:20:05,259 y al 474 00:20:05,259 --> 00:20:06,660 constructor que le pasamos 475 00:20:06,660 --> 00:20:08,279 pues las propiedades que toquen 476 00:20:08,279 --> 00:20:10,599 que son las que yo le he dado aquí 477 00:20:10,599 --> 00:20:13,240 a ver, esta llamada también sería 478 00:20:13,240 --> 00:20:15,039 válida, esto también sería válido, ¿por qué? 479 00:20:15,480 --> 00:20:17,180 porque la superclase tiene un 480 00:20:17,180 --> 00:20:19,140 constructor vacío también, lo tiene 481 00:20:19,140 --> 00:20:20,819 tiene este, que no hace nada 482 00:20:20,819 --> 00:20:23,119 entonces este constructor también sería válido 483 00:20:23,119 --> 00:20:24,220 lo que pasa es que este constructor 484 00:20:24,220 --> 00:20:26,220 no estaría haciendo nada 485 00:20:26,220 --> 00:20:29,119 y luego inicializando bonos, con lo cual esto que le hemos pasado 486 00:20:29,119 --> 00:20:30,960 aquí lo estaría tirando a la basura, no lo estaría usando 487 00:20:30,960 --> 00:20:33,220 para nada, pero sentido 488 00:20:33,220 --> 00:20:34,740 sintáctico tiene 489 00:20:34,740 --> 00:20:36,799 ¿vale? 490 00:20:36,819 --> 00:20:38,279 lo normal es que nuestro constructor 491 00:20:38,279 --> 00:20:39,859 parámetros, lo usemos 492 00:20:39,859 --> 00:20:41,960 ¿vale? entonces 493 00:20:41,960 --> 00:20:44,480 esta llamada de aquí 494 00:20:44,480 --> 00:20:46,900 esta llamada, en caso 495 00:20:46,900 --> 00:20:48,960 de usarla, que no es que sea obligatorio usarla 496 00:20:48,960 --> 00:20:49,839 en caso de usarla 497 00:20:49,839 --> 00:20:52,779 Tiene que ponerse siempre como la primera línea 498 00:20:52,779 --> 00:20:54,299 ¿Vale? 499 00:20:55,259 --> 00:20:56,480 Sí, vamos a comprobarlo 500 00:20:56,480 --> 00:20:58,420 Por si hubieran cambiado las cosas en estos últimos 501 00:20:58,420 --> 00:20:59,839 Tiempos, pero 502 00:20:59,839 --> 00:21:11,769 Constructor 503 00:21:11,769 --> 00:21:21,680 ¿Vale? Si la pongo 504 00:21:21,680 --> 00:21:23,339 Si no la pongo como primera línea 505 00:21:23,339 --> 00:21:26,200 Me da un error, y de hecho me lo está diciendo 506 00:21:26,200 --> 00:21:28,339 Me dice, oye, la llamada 507 00:21:28,339 --> 00:21:29,880 Al constructor de arriba 508 00:21:29,880 --> 00:21:32,259 Tiene que ser, hasta aquí hemos llegado 509 00:21:32,259 --> 00:21:34,019 ¿No? Vamos 510 00:21:34,019 --> 00:21:35,940 Ha hecho un gesto 511 00:21:35,940 --> 00:21:39,519 esto, mira, me has recordado 512 00:21:39,519 --> 00:21:40,960 un amigo mío 513 00:21:40,960 --> 00:21:42,079 entró una vez a un bar 514 00:21:42,079 --> 00:21:44,099 y en el bar de repente 515 00:21:44,099 --> 00:21:45,539 bueno, entré yo con él 516 00:21:45,539 --> 00:21:48,359 y había un montón de gente de una pinta muy muy muy rara 517 00:21:48,359 --> 00:21:49,559 de estas como de broncas 518 00:21:49,559 --> 00:21:51,920 entonces entramos 519 00:21:51,920 --> 00:21:55,160 y de repente mi amigo que lleva gafas 520 00:21:55,160 --> 00:21:57,119 se las quitó 521 00:21:57,119 --> 00:21:58,799 y las guardaba en el bolsillo 522 00:21:58,799 --> 00:22:00,359 con ese gesto así de tranquilidad 523 00:22:00,359 --> 00:22:02,839 claro, pues ese gesto así 524 00:22:02,839 --> 00:22:04,079 no veas 525 00:22:04,079 --> 00:22:05,819 el poderío que transmitió 526 00:22:05,819 --> 00:22:08,279 Claro, pues tú lo mismo, has bajado esto 527 00:22:08,279 --> 00:22:09,819 No sigas dando clase 528 00:22:09,819 --> 00:22:10,980 Porque se ha acabado 529 00:22:10,980 --> 00:22:13,660 Claro 530 00:22:13,660 --> 00:22:16,519 Venga, pues ya lo hemos acabado