1 00:00:01,780 --> 00:00:24,359 Bueno, pues esa es una descripción muy habitual en la mayoría de las situaciones que uno tiene que gestionar en la vida real, ¿no? Tiene que gestionar una serie de entidades que son cosas y además hacen cosas, son y hacen, como estos elfos, que son criaturas místicas, pero además tienen poderes, ejercen poderes. 2 00:00:24,359 --> 00:00:27,300 entonces, como resultado del análisis 3 00:00:27,300 --> 00:00:30,339 de una situación, nosotros podemos llegar a esta conclusión 4 00:00:30,339 --> 00:00:33,640 mis empleados, mis facturas, mis no sé qué 5 00:00:33,640 --> 00:00:35,320 son esto, son esto 6 00:00:35,320 --> 00:00:38,020 y además hacen todas estas cosas 7 00:00:38,020 --> 00:00:40,979 entonces yo tengo que hacer ahora todo mi diseño de clases 8 00:00:40,979 --> 00:00:44,399 para hacer ahí una foto bonita de toda esa realidad 9 00:00:44,399 --> 00:00:47,340 de tal forma que me quede ya una aplicación 10 00:00:47,340 --> 00:00:51,219 pues manejable y fácilmente ampliable 11 00:00:51,219 --> 00:00:53,280 porque la foto está bien hecha 12 00:00:53,280 --> 00:00:54,479 entonces puedo ampliarla bien 13 00:00:54,479 --> 00:00:57,140 bueno, pues esa es la idea, cuando uno se ha dado cuenta 14 00:00:57,140 --> 00:00:58,640 de que esas entidades que va a manejar 15 00:00:58,640 --> 00:01:00,799 son cosas y además hacen cosas 16 00:01:00,799 --> 00:01:02,979 pues entonces habrá relación de herencia 17 00:01:02,979 --> 00:01:05,319 de yo soy esto 18 00:01:05,319 --> 00:01:07,099 pues heredo de esto, entonces me hago 19 00:01:07,099 --> 00:01:08,819 una super clase de la que heredan 20 00:01:08,819 --> 00:01:11,219 todas esas entidades que he visto 21 00:01:11,219 --> 00:01:13,459 que son algo, me hago una super clase 22 00:01:13,459 --> 00:01:14,959 y seguramente eso me ayude 23 00:01:14,959 --> 00:01:17,319 me ayude en mi aplicación 24 00:01:17,319 --> 00:01:19,159 y luego además como hacen 25 00:01:19,159 --> 00:01:21,099 cosas, ejercen un comportamiento 26 00:01:21,680 --> 00:01:22,299 pues 27 00:01:22,299 --> 00:01:25,439 Eso se suele recoger en interfaces 28 00:01:25,439 --> 00:01:28,519 Interfaces que recogen el comportamiento a través del método 29 00:01:28,519 --> 00:01:31,079 Entonces, esas entidades serán cosas 30 00:01:31,079 --> 00:01:32,680 O lo que es lo mismo, heredarán 31 00:01:32,680 --> 00:01:34,560 Y además harán cosas 32 00:01:34,560 --> 00:01:37,140 O lo que es lo mismo, implementarán interfaces 33 00:01:37,140 --> 00:01:38,959 Y pueden hacer las dos cosas 34 00:01:38,959 --> 00:01:43,719 Dentro de mi jerarquía, yo heredo de esto porque soy eso 35 00:01:43,719 --> 00:01:48,219 Y además implemento esta interfaz porque me comporto de esa manera 36 00:01:48,219 --> 00:01:51,879 Pues bueno, este ejercicio era eso 37 00:01:51,879 --> 00:01:53,379 En resumido 38 00:01:53,379 --> 00:01:56,480 Los dragones, elfos y hipogrifos 39 00:01:56,480 --> 00:01:57,840 Pues son criaturas místicas 40 00:01:57,840 --> 00:01:59,640 Y tienen poderes 41 00:01:59,640 --> 00:02:01,379 Entonces como son criaturas místicas 42 00:02:01,379 --> 00:02:03,859 Pues una clase criatura mística 43 00:02:03,859 --> 00:02:05,879 Que luego habría que decidir si es abstracto o no 44 00:02:05,879 --> 00:02:07,379 Depende de lo que me interese 45 00:02:07,379 --> 00:02:09,539 Y luego una interfaz 46 00:02:09,539 --> 00:02:11,080 Que es poder místico 47 00:02:11,080 --> 00:02:13,219 Porque eso se refiere ya a 48 00:02:13,219 --> 00:02:15,120 Ejercer, hacer cosas 49 00:02:15,120 --> 00:02:17,319 En este caso activar los poderes o lo que fuera 50 00:02:17,319 --> 00:02:19,180 Pues venga 51 00:02:19,180 --> 00:02:20,060 Entonces 52 00:02:20,060 --> 00:02:23,780 aquí ya el diseño como nos lo daban 53 00:02:23,780 --> 00:02:25,560 pautado, pues había poco que pensar 54 00:02:25,560 --> 00:02:27,740 primero la interfaz 55 00:02:27,740 --> 00:02:28,659 con el método 56 00:02:28,659 --> 00:02:31,520 pues ya está, entonces 57 00:02:31,520 --> 00:02:38,389 ah bueno, pues todo 58 00:02:38,389 --> 00:02:50,599 vale, pues la interfaz 59 00:02:50,599 --> 00:02:53,240 entonces la interfaz ya sabéis que solamente puede tener 60 00:02:53,240 --> 00:02:55,439 o variables constantes 61 00:02:55,439 --> 00:02:57,039 porque son variables que uno 62 00:02:57,039 --> 00:02:58,979 identifica en la aplicación que le interesan 63 00:02:58,979 --> 00:03:00,659 porque las usan un montón de clases 64 00:03:00,659 --> 00:03:03,240 pues el sitio más recogidito, ahí más apañado 65 00:03:03,240 --> 00:03:04,419 para ponerlo es en la interfaz 66 00:03:04,419 --> 00:03:06,960 una variable public static final 67 00:03:06,960 --> 00:03:07,819 del tipo que sea 68 00:03:07,819 --> 00:03:11,099 entonces en las interfaces veréis muchas veces que hay 69 00:03:11,099 --> 00:03:12,719 public static final 70 00:03:12,719 --> 00:03:14,960 número pi, lo que sea, porque son 71 00:03:14,960 --> 00:03:17,240 constantes, valores constantes 72 00:03:17,240 --> 00:03:19,259 que usan muchas clases 73 00:03:19,259 --> 00:03:20,300 pues los meto ahí todos 74 00:03:20,300 --> 00:03:22,979 eso puede tener una interfaz, luego además que puede tener 75 00:03:22,979 --> 00:03:24,139 que es lo que tiene 76 00:03:24,139 --> 00:03:26,520 métodos vacíos que 77 00:03:26,520 --> 00:03:29,259 recogen actuaciones 78 00:03:29,259 --> 00:03:30,460 que tienen 79 00:03:30,460 --> 00:03:33,020 que implementar la gente que implementa la interfaz 80 00:03:33,020 --> 00:03:37,060 En este caso, la única actuación que había era la de activar poder. 81 00:03:40,419 --> 00:03:43,599 Recordad que son públicos por definición, no hay que ponerlo. 82 00:03:45,639 --> 00:03:48,500 Esta era esta interfaz, ya está, no tiene más. 83 00:03:50,099 --> 00:03:54,699 Luego, entonces, las criaturas esas, aparte de implementar esto, 84 00:03:55,699 --> 00:03:59,240 son criaturas místicas. 85 00:03:59,400 --> 00:04:00,879 Entonces, como todas son criaturas místicas, 86 00:04:01,000 --> 00:04:04,199 pues tiene sentido hacer esa clase, esa superclase. 87 00:04:04,199 --> 00:04:05,300 ¿Qué me dice aquí? 88 00:04:05,479 --> 00:04:07,599 esta clase abstracta 89 00:04:07,599 --> 00:04:10,780 que ya me dicen directamente que sea abstracta 90 00:04:10,780 --> 00:04:14,199 pues venga, esta clase abstracta 91 00:04:14,199 --> 00:04:19,579 hago una nueva clase 92 00:04:19,579 --> 00:04:27,920 y ahora 93 00:04:27,920 --> 00:04:30,360 esta clase 94 00:04:30,360 --> 00:04:33,920 tiene que implementar esta otra 95 00:04:33,920 --> 00:04:36,360 entonces 96 00:04:36,360 --> 00:04:41,360 ¿qué implicaciones tiene esta relación de implementación? 97 00:04:41,899 --> 00:04:43,819 la implicación que tiene es 98 00:04:43,819 --> 00:04:45,959 que estamos diciendo todos los que sean 99 00:04:45,959 --> 00:04:47,660 criaturas místicas, todos 100 00:04:47,660 --> 00:04:49,720 sea dragón, elfo, sea quien sea 101 00:04:49,720 --> 00:04:52,360 todos tienen que tener poderes 102 00:04:52,360 --> 00:04:53,959 es lo que estamos diciendo, todos 103 00:04:53,959 --> 00:04:56,019 si quisiéramos que 104 00:04:56,019 --> 00:04:57,860 solo tuvieran poderes los elfos 105 00:04:57,860 --> 00:04:58,920 y los dragones no 106 00:04:58,920 --> 00:05:02,040 pues entonces no haríamos la relación de implementación aquí 107 00:05:02,040 --> 00:05:03,779 la haríamos directamente 108 00:05:03,779 --> 00:05:05,899 el elfo implementa el poder místico 109 00:05:05,899 --> 00:05:07,939 y el dragón no, pero aquí no la haríamos 110 00:05:07,939 --> 00:05:09,139 porque si la hacemos aquí 111 00:05:09,139 --> 00:05:11,500 todo el que herede de criatura 112 00:05:11,500 --> 00:05:13,339 mística, todo el que herede 113 00:05:13,339 --> 00:05:15,040 a través de esa relación de herencia 114 00:05:15,040 --> 00:05:17,420 va a tener que implementar poder místico 115 00:05:17,420 --> 00:05:19,220 porque éste lo implementa 116 00:05:19,220 --> 00:05:21,100 entonces, aquí 117 00:05:21,100 --> 00:05:22,879 haciendo esta relación de implementación decimos 118 00:05:22,879 --> 00:05:24,240 oye, todo el que herede de aquí 119 00:05:24,240 --> 00:05:26,579 a través de esta relación de herencia 120 00:05:26,579 --> 00:05:29,079 tiene que implementar ésta obligatoriamente 121 00:05:29,079 --> 00:05:31,199 entonces todas las criaturas místicas 122 00:05:31,199 --> 00:05:32,839 todas van a tener 123 00:05:32,839 --> 00:05:34,420 un poder 124 00:05:34,420 --> 00:05:36,639 ¿eso es lo que queremos? 125 00:05:36,800 --> 00:05:38,439 sí, pues estupendo, ¿no es lo que queremos? 126 00:05:38,560 --> 00:05:39,579 pues hay que cambiar el diseño 127 00:05:39,579 --> 00:05:42,060 vale, entonces como criatura mística 128 00:05:42,060 --> 00:05:43,500 implementa el poder místico 129 00:05:43,500 --> 00:05:45,220 ya el compilador no lo está diciendo, me lo está diciendo 130 00:05:45,220 --> 00:05:46,379 oye, si implementas esto 131 00:05:46,379 --> 00:05:49,319 tienes que obligatoriamente 132 00:05:49,319 --> 00:05:51,819 darle cuerpo a este método 133 00:05:51,819 --> 00:05:53,500 y si no se lo das 134 00:05:53,500 --> 00:05:56,160 te quedas con el vacío 135 00:05:56,160 --> 00:05:57,360 y si te quedas con el vacío 136 00:05:57,360 --> 00:05:59,259 no te queda más remedio que ser abstracto 137 00:05:59,259 --> 00:06:01,879 vale, entonces en nuestro caso 138 00:06:01,879 --> 00:06:03,560 ya nos habían dicho que esta clase 139 00:06:03,560 --> 00:06:04,920 fuera abstracta 140 00:06:04,920 --> 00:06:07,620 entonces como ya nos han dicho que esta clase 141 00:06:07,620 --> 00:06:09,560 fuera abstracta, ya no tenemos ninguno 142 00:06:09,560 --> 00:06:10,939 obligación, ninguna 143 00:06:10,939 --> 00:06:13,639 de implementar este método 144 00:06:13,639 --> 00:06:16,259 ¿vale? ninguna 145 00:06:16,259 --> 00:06:19,379 porque criatura mística lo tiene dentro 146 00:06:19,379 --> 00:06:21,120 pero lo tiene vacío también 147 00:06:21,120 --> 00:06:23,000 y no pasa nada porque lo tenga vacío 148 00:06:23,000 --> 00:06:26,139 porque es abstracta, no pasa nada porque lo tenga vacío 149 00:06:26,139 --> 00:06:28,759 si esto lo quitamos 150 00:06:28,759 --> 00:06:31,819 no puede quedarse así 151 00:06:31,819 --> 00:06:33,879 tiene que darle un cuerpo 152 00:06:33,879 --> 00:06:35,180 al activar poder 153 00:06:35,180 --> 00:06:37,839 claro, aquí el tema es que la criatura 154 00:06:37,839 --> 00:06:39,839 mística no sabe cómo activar su poder todavía. 155 00:06:40,000 --> 00:06:41,180 Ya lo sabrá la heredera. 156 00:06:41,600 --> 00:06:43,759 Entonces, como no sabe, pues aquí la 157 00:06:43,759 --> 00:06:45,699 solución es dejarla como 158 00:06:45,699 --> 00:06:47,980 abstracta. Aquí es la solución. 159 00:06:49,199 --> 00:06:49,860 Uno en un diseño 160 00:06:49,860 --> 00:06:51,660 de estos podría decir, vale, la criatura 161 00:06:51,660 --> 00:06:53,740 mística todavía no sabe cómo activar 162 00:06:53,740 --> 00:06:55,699 su poder. Todavía no sabe cómo hacer este 163 00:06:55,699 --> 00:06:56,819 método. No sabe todavía. 164 00:06:57,579 --> 00:06:59,600 Pero yo tengo que sobrescribirlo. 165 00:06:59,980 --> 00:07:01,639 Bueno, no pasa nada. Lo sobrescribo 166 00:07:01,639 --> 00:07:03,519 porque es que estoy obligada 167 00:07:03,519 --> 00:07:07,310 a sobrescribirlo y lo dejo 168 00:07:07,310 --> 00:07:12,939 así. Ah, activar poder. 169 00:07:12,939 --> 00:07:26,319 vale, uno en este juego de diseño 170 00:07:26,319 --> 00:07:27,279 del que estamos hablando 171 00:07:27,279 --> 00:07:29,060 que no os perdáis 172 00:07:29,060 --> 00:07:31,519 forma parte de la programación 173 00:07:31,519 --> 00:07:33,579 en un porcentaje mucho más elevado que el teclea 174 00:07:33,579 --> 00:07:35,740 pues en este juego de diseño 175 00:07:35,740 --> 00:07:36,420 uno podría 176 00:07:36,420 --> 00:07:41,759 porque me sigue poniendo esto 177 00:07:41,759 --> 00:07:46,910 no lo he escrito bien 178 00:07:46,910 --> 00:07:51,790 ah, claro 179 00:07:51,790 --> 00:07:53,089 que se me había puesto el public, vale 180 00:07:53,089 --> 00:07:58,829 vale, porque yo aquí no pongo 181 00:07:58,829 --> 00:08:00,730 el public porque ya digo que por defecto siempre 182 00:08:00,730 --> 00:08:02,629 lo son, entonces aquí no hace falta en la 183 00:08:02,629 --> 00:08:05,089 interfaz, pero cuando lo sobrescribes 184 00:08:05,089 --> 00:08:06,689 cuando lo sobrescribes 185 00:08:06,689 --> 00:08:08,810 la clase en la que lo sobrescribes 186 00:08:08,810 --> 00:08:09,790 ya no es una interfaz 187 00:08:09,790 --> 00:08:12,670 entonces en esa hay que poner el modificador 188 00:08:12,670 --> 00:08:13,910 que sea, el que tú quieras 189 00:08:13,910 --> 00:08:16,370 y este método es un modificador en public 190 00:08:16,370 --> 00:08:18,370 aunque yo me lo haya ahorrado en interfaz 191 00:08:18,370 --> 00:08:20,689 bueno, pues entonces en este juego de diseño 192 00:08:20,689 --> 00:08:22,069 del que hablamos uno podría decir 193 00:08:22,069 --> 00:08:24,930 vale, como implementas poder místico 194 00:08:24,930 --> 00:08:26,829 yo tengo que sobrescribir sí o sí 195 00:08:26,829 --> 00:08:28,730 pero ojo, estoy al nivel 196 00:08:28,730 --> 00:08:30,550 de la jerarquía alto, criatura mística 197 00:08:30,550 --> 00:08:54,429 Todavía no puedo activar el poder, todavía no puedo, pero me obliga a sobreescribirlo. Bueno, pues lo dejo así en blanco. Uno podría pensar que esta es una solución de diseño y hombre, lo es, pero es mala. ¿Por qué es mala? Porque ahora yo me pongo a hacer criaturas que hereden de esta. El dragón, el elfo, el hipogrifo, el quien sea. Me pongo a hacer criaturas que hereden de esta. 198 00:08:54,429 --> 00:09:08,190 Como esta ya tiene este método hecho, aunque sea vacío, las clases herederas ya heredan esa versión y el compilador no me va a obligar a sobreescribirlo. 199 00:09:08,190 --> 00:09:14,509 No me va a obligar, me va a decir, tú ya estás heredando una versión, quédate con esa o sobreescribe. 200 00:09:15,429 --> 00:09:20,129 Entonces lo normal es que uno sobreescriba, porque cada criatura tenga ya su poder concreto y sobreescriba. 201 00:09:20,129 --> 00:09:38,870 Pero si uno está alelado y se le olvida sobrescribir, deja a una criatura sin poder y la deja con este. Entonces es mucho más peligroso, ¿vale? Es mucho más peligroso porque te arriesgas a que todo lo que herede de aquí, todo lo que herede, a alguno se te olvide y le dejes ahí sin poder. 202 00:09:38,870 --> 00:09:41,429 pues no, entonces no es una buena solución 203 00:09:41,429 --> 00:09:43,029 la mejor solución es 204 00:09:43,029 --> 00:09:45,230 oye, que criatura mística 205 00:09:45,230 --> 00:09:46,950 todavía no está en condiciones 206 00:09:46,950 --> 00:09:48,889 de activar su poder porque no sabe 207 00:09:48,889 --> 00:09:50,850 si es elfo, si es pepito, si es juanito 208 00:09:50,850 --> 00:09:52,750 pues entonces 209 00:09:52,750 --> 00:09:54,950 yo no sobrescribo el método todavía 210 00:09:54,950 --> 00:09:57,190 me quedo con la versión vacía 211 00:09:57,190 --> 00:09:59,409 pero a cambio 212 00:09:59,409 --> 00:10:01,169 digo, pues soy abstracta 213 00:10:01,169 --> 00:10:05,409 y no pasa nada por decir que uno es abstracto 214 00:10:05,409 --> 00:10:07,110 lo único que pasa 215 00:10:07,110 --> 00:10:08,529 por decir que uno es abstracto 216 00:10:08,529 --> 00:10:11,509 ¿qué es? ¿qué implicación tiene que esa clase 217 00:10:11,509 --> 00:10:13,190 sea abstracta? respecto a no serla 218 00:10:13,190 --> 00:10:15,090 ¿cuál es la única que tiene? 219 00:10:17,340 --> 00:10:18,179 que alguien me diga algo 220 00:10:18,179 --> 00:10:23,039 la única diferencia que hay entre una clase abstracta 221 00:10:23,039 --> 00:10:24,639 y otra, ¿no? ¿cuál es? 222 00:10:25,980 --> 00:10:26,840 afecto práctico 223 00:10:26,840 --> 00:10:28,379 de lo que... 224 00:10:28,379 --> 00:10:31,779 ¿puedes llamar método de la clase abstracta? 225 00:10:34,419 --> 00:10:35,480 la única diferencia 226 00:10:35,480 --> 00:10:38,659 que no puedes crear objetos 227 00:10:38,659 --> 00:10:41,259 es la única diferencia 228 00:10:41,259 --> 00:10:42,779 que de una clase abstracta 229 00:10:42,779 --> 00:10:44,779 no se pueden instanciar objetos 230 00:10:44,779 --> 00:10:47,559 yo no puedo hacer un new criatura mística 231 00:10:47,559 --> 00:10:49,320 nunca voy a poder hacer 232 00:10:49,320 --> 00:10:50,639 un new criatura mística 233 00:10:50,639 --> 00:10:52,840 nunca, porque es abstracta 234 00:10:52,840 --> 00:10:55,200 si yo le quito el abstract 235 00:10:55,200 --> 00:10:57,320 entonces 236 00:10:57,320 --> 00:10:58,919 tendré que sobreescribir el método 237 00:10:58,919 --> 00:10:59,620 activar poder 238 00:10:59,620 --> 00:11:02,700 si podré hacer un new criatura mística 239 00:11:02,700 --> 00:11:04,840 claro, la pregunta es 240 00:11:04,840 --> 00:11:07,460 yo necesito que haya criaturas místicas genéricas 241 00:11:07,460 --> 00:11:08,379 necesito que existan 242 00:11:08,379 --> 00:11:11,379 pues no, en mi aplicación no hay criaturas místicas genéricas 243 00:11:11,379 --> 00:11:13,039 o hay o dragones o elfos 244 00:11:13,039 --> 00:11:14,379 o la otra cosa 245 00:11:14,379 --> 00:11:15,919 hay eso 246 00:11:15,919 --> 00:11:18,899 yo nunca voy a tener que hacer un new criatura mística 247 00:11:18,899 --> 00:11:21,059 solamente voy a hacer un new dragón, un new elfo 248 00:11:21,059 --> 00:11:22,860 un new no sé cuántos, unicornio, eso 249 00:11:22,860 --> 00:11:25,039 pues entonces está abstracta 250 00:11:25,039 --> 00:11:27,759 y siendo abstracta 251 00:11:27,759 --> 00:11:29,580 hasta protegemos más la aplicación 252 00:11:29,580 --> 00:11:31,840 porque evitemos que alguien instancie 253 00:11:31,840 --> 00:11:33,399 algo que el mío que va a hacer va a ser molestar 254 00:11:33,399 --> 00:11:35,700 bueno, pues este 255 00:11:35,700 --> 00:11:37,639 diseño es mucho mejor que 256 00:11:37,639 --> 00:11:39,759 las otras alternativas, que digo, que es no ponerla 257 00:11:39,759 --> 00:11:41,639 abstracta, crearlo un método en blanco vacío 258 00:11:41,639 --> 00:11:43,000 por las razones que estoy diciendo 259 00:11:43,000 --> 00:11:45,059 Vale 260 00:11:45,059 --> 00:11:47,500 Bueno, pues entonces 261 00:11:47,500 --> 00:11:51,919 Seguimos 262 00:11:51,919 --> 00:11:54,360 ¿Qué más cosas? 263 00:11:54,940 --> 00:12:02,200 ¿Qué más cosas tenía la criatura mística? 264 00:12:02,320 --> 00:12:04,059 Implementa el poder místico y patatín 265 00:12:04,059 --> 00:12:06,120 Las clases abstractas 266 00:12:06,120 --> 00:12:07,139 A diferencia de las interfaces 267 00:12:07,139 --> 00:12:08,480 Pueden tener atributos 268 00:12:08,480 --> 00:12:10,600 Lo que les dé la gana 269 00:12:10,600 --> 00:12:12,700 Constructores, lo que quieran 270 00:12:12,700 --> 00:12:15,419 Los constructores diréis 271 00:12:15,419 --> 00:12:16,840 De nuevo, ¿y para qué me valen? 272 00:12:16,860 --> 00:12:17,820 Si no puedes instanciar 273 00:12:17,820 --> 00:12:22,559 valen para ser usados desde las clases herederas 274 00:12:22,559 --> 00:12:24,120 mediante el súper, ¿verdad? 275 00:12:24,720 --> 00:12:26,139 Era para eso, para un niño que valían. 276 00:12:26,820 --> 00:12:29,740 Bueno, pues la criatura mística tiene nombre y edad 277 00:12:29,740 --> 00:12:32,519 y un método abstracto de escribir criatura. 278 00:12:33,659 --> 00:12:33,899 ¿Vale? 279 00:12:34,860 --> 00:12:37,639 Entonces, eso es un método abstracto, 280 00:12:37,700 --> 00:12:39,179 con lo cual lo vamos a dejar sin cuerpo. 281 00:12:40,039 --> 00:12:43,480 Lo que decía aquí es que este método está pensado para eso, 282 00:12:43,480 --> 00:12:47,019 pero luego lo tendrán que sobreescribir las clases herederas. 283 00:12:47,019 --> 00:12:51,399 Pues venga, todo el que quiera ser criatura mística 284 00:12:51,399 --> 00:13:03,740 Pues tiene que tener su nombre y su edad 285 00:13:03,740 --> 00:13:09,889 Hemos dicho, ¿no? Tiene que tener su nombre y su edad 286 00:13:09,889 --> 00:13:14,730 Entonces, como hemos elegido que sean privados 287 00:13:14,730 --> 00:13:17,769 Le ponemos Get y Set, si no son privados, pues no hace falta 288 00:13:17,769 --> 00:13:22,509 Pero bueno, como habitualmente trabajamos así 289 00:13:22,509 --> 00:13:25,149 Pues así lo dejamos 290 00:13:25,149 --> 00:13:28,909 vale, y luego hemos dicho que además de todo esto 291 00:13:28,909 --> 00:13:30,590 un método abstracto 292 00:13:30,590 --> 00:13:34,110 un método abstracto, recordad que es un método sin cuerpo 293 00:13:34,110 --> 00:13:55,649 que describe, vale, pues este es el método vacío 294 00:13:55,649 --> 00:14:01,639 vale, y ahora ya tenemos las clases concretas 295 00:14:01,639 --> 00:14:03,539 de las que ya que sí que se pueden crear objetos 296 00:14:03,539 --> 00:14:07,759 que son tres, que cada uno añade una propiedad suya 297 00:14:07,759 --> 00:14:15,360 pues venga, el dragón, el dragón tiene su nombre, su edad 298 00:14:15,360 --> 00:14:18,299 Y aparte añade, pues vamos a ponerle el color 299 00:14:18,299 --> 00:14:25,409 ¿Vale? Añade el color 300 00:14:25,409 --> 00:14:27,950 Se le podría hacer un constructor 301 00:14:27,950 --> 00:14:29,889 O trabajar 302 00:14:29,889 --> 00:14:32,490 Lo que haga falta 303 00:14:32,490 --> 00:14:37,440 Entonces 304 00:14:37,440 --> 00:14:40,919 El dragón es una criatura mística 305 00:14:40,919 --> 00:14:43,259 Entonces como es una criatura mística 306 00:14:43,259 --> 00:14:44,879 Pues entonces tiene que heredar 307 00:14:44,879 --> 00:14:46,980 De criatura mística 308 00:14:46,980 --> 00:14:48,379 Porque lo es 309 00:14:48,379 --> 00:14:50,620 Es una relación de herencia 310 00:14:50,620 --> 00:14:50,960 ¿Vale? 311 00:14:50,960 --> 00:14:53,679 entonces desde el momento en que 312 00:14:53,679 --> 00:14:55,519 yo digo que es una criatura mística 313 00:14:55,519 --> 00:14:56,600 pues entonces 314 00:14:56,600 --> 00:14:58,679 empiezan los compromisos 315 00:14:58,679 --> 00:15:01,120 empiezan los compromisos que son 316 00:15:01,120 --> 00:15:03,259 ¿eres criatura mística? pues lo siento 317 00:15:03,259 --> 00:15:05,799 este método tienes que darle cuerpo 318 00:15:05,799 --> 00:15:07,899 el describir criatura 319 00:15:07,899 --> 00:15:09,620 y no solo eso 320 00:15:09,620 --> 00:15:11,600 como a través de criatura mística 321 00:15:11,600 --> 00:15:13,059 estamos implementando el otro 322 00:15:13,059 --> 00:15:16,120 poder místico, pues también hay que implementar 323 00:15:16,120 --> 00:15:17,700 el otro método 324 00:15:17,700 --> 00:15:19,720 el activar poder, entonces en dragón 325 00:15:19,720 --> 00:15:20,799 hay que implementar los dos 326 00:15:20,799 --> 00:15:22,840 estamos obligados a implementar los dos 327 00:15:22,840 --> 00:15:25,700 el que hereda de criatura mística 328 00:15:25,700 --> 00:15:26,779 pero sin cuerpo 329 00:15:26,779 --> 00:15:29,019 y el que 330 00:15:29,019 --> 00:15:31,080 hereda 331 00:15:31,080 --> 00:15:32,779 de poder místico 332 00:15:32,779 --> 00:15:33,840 también sin cuerpo 333 00:15:33,840 --> 00:15:36,690 está claro, ¿no? 334 00:15:37,970 --> 00:15:39,710 la criatura mística tiene dentro 335 00:15:39,710 --> 00:15:41,789 tiene dentro 336 00:15:41,789 --> 00:15:43,070 heredado 337 00:15:43,070 --> 00:15:46,389 el del poder místico, lo tiene dentro, heredado sin cuerpo 338 00:15:46,389 --> 00:15:48,730 y lo puede tener sin cuerpo porque es abstracta 339 00:15:48,730 --> 00:15:49,409 si no, no podría 340 00:15:49,409 --> 00:15:51,769 Bueno, pues entonces 341 00:15:51,769 --> 00:15:53,350 Vamos a decirle, venga, pues ala 342 00:15:53,350 --> 00:15:54,830 Vamos a implementar los dos 343 00:15:54,830 --> 00:15:58,700 Ala, estos son los dos 344 00:15:58,700 --> 00:16:01,620 Y ahora aquí ya, pues uno pone lo que le dé la gana 345 00:16:01,620 --> 00:16:11,110 Activo 346 00:16:11,110 --> 00:16:12,309 Poder 347 00:16:12,309 --> 00:16:13,909 Dragón 348 00:16:13,909 --> 00:16:15,289 Vale 349 00:16:15,289 --> 00:16:17,830 Activo poder del dragón 350 00:16:17,830 --> 00:16:21,210 Y aquí, pues 351 00:16:21,210 --> 00:16:24,570 Pues muestro la criatura 352 00:16:24,570 --> 00:16:28,179 Lo que sea 353 00:16:28,179 --> 00:16:29,659 Venga, pues nada 354 00:16:29,659 --> 00:16:36,480 Get nombre 355 00:16:36,480 --> 00:16:39,240 Sin espacios 356 00:16:39,240 --> 00:16:39,820 Y sin nada 357 00:16:39,820 --> 00:16:42,179 Get edad 358 00:16:42,179 --> 00:16:47,200 Y get color 359 00:16:47,200 --> 00:16:48,019 Así a lo bestia 360 00:16:48,019 --> 00:16:51,360 Vale, a ver 361 00:16:51,360 --> 00:16:54,519 Y el dragón ya se ha acabado 362 00:16:54,519 --> 00:16:57,580 Y los otros dos pues igual 363 00:16:57,580 --> 00:16:58,440 A ver, aquí 364 00:16:58,440 --> 00:17:00,799 Aquí algunos habéis hecho 365 00:17:00,799 --> 00:17:01,740 Alguna cosa un poco rara 366 00:17:01,740 --> 00:17:04,059 A ver 367 00:17:04,059 --> 00:17:06,799 Cuando habéis activado el poder 368 00:17:06,799 --> 00:17:10,200 imagino que el proceso mental 369 00:17:10,200 --> 00:17:11,000 que habéis seguido es 370 00:17:11,000 --> 00:17:13,220 este método 371 00:17:13,220 --> 00:17:15,759 como yo he hecho un system out solamente 372 00:17:15,759 --> 00:17:18,079 en este caso yo he hecho un system out 373 00:17:18,079 --> 00:17:19,019 println solamente 374 00:17:19,019 --> 00:17:21,279 y no he tirado de las propiedades del dragón 375 00:17:21,279 --> 00:17:22,539 pero podría haberlo hecho 376 00:17:22,539 --> 00:17:23,559 podría haberlo hecho 377 00:17:23,559 --> 00:17:26,819 pero bueno 378 00:17:26,819 --> 00:17:29,200 algunos pues habéis elegido 379 00:17:29,200 --> 00:17:31,980 una implementación de activar poder 380 00:17:31,980 --> 00:17:34,380 que no tira de las propiedades del dragón 381 00:17:34,380 --> 00:17:36,019 muestra un mensaje genérico 382 00:17:36,019 --> 00:17:37,079 muestra un mensaje genérico 383 00:17:37,079 --> 00:17:38,900 entonces en ese caso concreto 384 00:17:38,900 --> 00:17:40,920 que es un caso concreto de todos los posibles 385 00:17:40,920 --> 00:17:42,640 en ese caso concreto 386 00:17:42,640 --> 00:17:44,920 pues yo entiendo que lo que ha pasado 387 00:17:44,920 --> 00:17:46,259 es que lo habéis mirado y habéis dicho 388 00:17:46,259 --> 00:17:48,960 uy, este método que acabo yo de escribir aquí 389 00:17:48,960 --> 00:17:51,579 resulta que no depende 390 00:17:51,579 --> 00:17:52,599 de las propiedades de la clase 391 00:17:52,599 --> 00:17:55,779 eso por definición es un método estático 392 00:17:55,779 --> 00:17:57,660 ¿verdad? no depende de las propiedades 393 00:17:57,660 --> 00:18:00,240 entonces según ese proceso mental 394 00:18:00,240 --> 00:18:01,759 decir uy, como no depende de la clase 395 00:18:01,759 --> 00:18:05,319 pues voy a decirlo 396 00:18:05,319 --> 00:18:06,880 avisando con estático 397 00:18:06,880 --> 00:18:09,099 entonces, ¿qué pasa si ponéis aquí el estático? 398 00:18:09,779 --> 00:18:11,700 pues que ya no estáis sobrescribiendo 399 00:18:11,700 --> 00:18:13,420 el método de arriba, estáis haciendo otro 400 00:18:13,420 --> 00:18:15,420 porque el método de poder místico 401 00:18:15,420 --> 00:18:16,640 no es estático, es este 402 00:18:16,640 --> 00:18:19,559 entonces, cuando os ha salido aquí el error 403 00:18:19,559 --> 00:18:21,640 lo que los ofrece 404 00:18:21,640 --> 00:18:22,299 es 405 00:18:22,299 --> 00:18:27,740 una de las cosas que os ofrece es 406 00:18:27,740 --> 00:18:29,319 pues hace estático este 407 00:18:29,319 --> 00:18:31,220 hace estático 408 00:18:31,220 --> 00:18:34,799 y así los has hecho iguales 409 00:18:34,799 --> 00:18:36,460 los he hecho iguales 410 00:18:36,460 --> 00:18:38,200 entonces uno puede decir, vale, pues lo cambio 411 00:18:38,200 --> 00:18:40,420 y lo hace estático 412 00:18:40,420 --> 00:18:42,799 pero claro, por un lado 413 00:18:42,799 --> 00:18:44,880 esta no es la solución, la solución es 414 00:18:44,880 --> 00:18:46,779 que la criatura dragón 415 00:18:46,779 --> 00:18:48,920 implemente ese método exactamente 416 00:18:48,920 --> 00:18:49,980 que lo implemente, entonces 417 00:18:49,980 --> 00:18:52,500 implementarlo significa conservar la cabecera tal cual 418 00:18:52,500 --> 00:18:54,160 si cambiáis la cabecera 419 00:18:54,160 --> 00:18:56,680 estáis haciendo 420 00:18:56,680 --> 00:18:58,440 otro método, no estáis implementando ese 421 00:18:58,440 --> 00:19:00,859 y este no se puede cambiar 422 00:19:00,859 --> 00:19:02,220 eso por un lado, vale 423 00:19:02,220 --> 00:19:03,700 entonces 424 00:19:03,700 --> 00:19:22,559 Entonces, ¿qué pasa? Ahora ya parte. Si uno, ahora ya, lo siguiente que digo es, ¿en una interfaz no puede haber métodos estáticos? Sí, claro que puede haber, como a mí se me ha puesto rojo, ¿no puede haber métodos estáticos? Sí puede haber métodos estáticos en una interfaz, puede haberlos. 425 00:19:22,559 --> 00:19:23,980 pero si los hay 426 00:19:23,980 --> 00:19:26,359 no se pueden dejar en blanco 427 00:19:26,359 --> 00:19:27,920 ¿vale? 428 00:19:28,240 --> 00:19:31,240 antes no se podía, pero a partir de cierta versión 429 00:19:31,240 --> 00:19:32,980 se permitió que las interfaces incorporaran 430 00:19:32,980 --> 00:19:33,819 métodos astáticos 431 00:19:33,819 --> 00:19:35,980 pero que se les pusiera cuerpo 432 00:19:35,980 --> 00:19:38,740 entonces esos métodos eran pues para hacer 433 00:19:38,740 --> 00:19:40,839 funcionalidades igual como las variables constantes 434 00:19:40,839 --> 00:19:41,759 que se pueden poner aquí 435 00:19:41,759 --> 00:19:44,579 pues hay una variable constante que va a usar mucha gente 436 00:19:44,579 --> 00:19:46,460 pues la pongo aquí en la interfaz 437 00:19:46,460 --> 00:19:48,819 como static final y le llamo 438 00:19:48,819 --> 00:19:50,839 con el nombre de la clase, fodermístico.patatino 439 00:19:50,839 --> 00:19:53,259 patapín, vale, pues podría 440 00:19:53,259 --> 00:19:55,259 ocurrir, hay alguna función 441 00:19:55,259 --> 00:19:57,220 concreta, una función que no dependa 442 00:19:57,220 --> 00:19:59,220 de nada, una función 443 00:19:59,220 --> 00:20:00,779 matemática, cualquier cosa 444 00:20:00,779 --> 00:20:02,559 que vaya a usar mucha gente 445 00:20:02,559 --> 00:20:05,000 vale, pues se puede meter 446 00:20:05,000 --> 00:20:07,519 en una interfaz, en un método estático 447 00:20:07,519 --> 00:20:09,200 y los métodos estáticos 448 00:20:09,200 --> 00:20:11,440 de las interfaces, obligatoriamente 449 00:20:11,440 --> 00:20:13,440 tienen que tener un cuerpo 450 00:20:13,440 --> 00:20:15,460 con lo cual este errorcito 451 00:20:15,460 --> 00:20:17,160 rojo, solo se me va a quitar 452 00:20:17,160 --> 00:20:19,039 si hago esto 453 00:20:19,039 --> 00:20:21,339 pero claro, esta es una cadena de cosas 454 00:20:21,339 --> 00:20:22,220 que habéis hecho 455 00:20:22,220 --> 00:20:25,640 que son cambios que pierden el sentido 456 00:20:25,640 --> 00:20:27,559 aquí, o sea, esto no es un método estático 457 00:20:27,559 --> 00:20:28,559 con un cuerpo vacío 458 00:20:28,559 --> 00:20:30,680 esto es un método de activar poder 459 00:20:30,680 --> 00:20:32,180 que 460 00:20:32,180 --> 00:20:35,319 la idea es que lo sobrescriba cada una 461 00:20:35,319 --> 00:20:37,859 de las herederas, y cada una como le dé la gana 462 00:20:37,859 --> 00:20:39,559 cada una como le dé la gana 463 00:20:39,559 --> 00:20:40,880 y esa sobrescritura 464 00:20:40,880 --> 00:20:43,319 en algunos casos puede, que no depende 465 00:20:43,319 --> 00:20:44,180 de propiedades de la clase 466 00:20:44,180 --> 00:20:46,400 pero en otros casos puede que sí 467 00:20:46,400 --> 00:20:48,339 Entonces no tengo que dar por sentado 468 00:20:48,339 --> 00:20:49,740 Que esto va a ser siempre estático 469 00:20:49,740 --> 00:20:51,039 No tengo que darlo por sentado 470 00:20:51,039 --> 00:20:52,539 ¿Vale? 471 00:20:54,440 --> 00:20:55,559 Bueno, pues entonces 472 00:20:55,559 --> 00:20:58,099 Esto viene pues de esta cadena 473 00:20:58,099 --> 00:20:59,940 De haber puesto esto aquí 474 00:20:59,940 --> 00:21:01,579 Esto no lo puedo poner 475 00:21:01,579 --> 00:21:03,559 Estoy implementando un método que no tiene el static 476 00:21:03,559 --> 00:21:04,599 Pues no puedo poner el static 477 00:21:04,599 --> 00:21:07,319 Porque entonces lo tengo que cambiar aquí 478 00:21:07,319 --> 00:21:09,319 Y si lo cambio ya ese método ha desaparecido 479 00:21:09,319 --> 00:21:13,920 Y esto aparte tiene un peligro 480 00:21:13,920 --> 00:21:17,559 Si lo cambiamos y le ponemos cuerpo 481 00:21:17,559 --> 00:21:20,559 efectivamente ya las clases que implementan 482 00:21:20,559 --> 00:21:22,799 ya no están obligadas a sobre escribirlo 483 00:21:22,799 --> 00:21:24,220 entonces la gran ventaja 484 00:21:24,220 --> 00:21:25,440 de las interfaces que es 485 00:21:25,440 --> 00:21:27,940 forzar, forzar 486 00:21:27,940 --> 00:21:30,420 a las clases que implementan, forzar a implementar 487 00:21:30,420 --> 00:21:31,980 un método, oye tú implementa esto 488 00:21:31,980 --> 00:21:34,200 porque lo va a necesitar la aplicación, implementalo 489 00:21:34,200 --> 00:21:35,920 pues ese forzado 490 00:21:35,920 --> 00:21:38,299 lo he quitado, desde el momento en que 491 00:21:38,299 --> 00:21:40,259 doy un cuerpo a un método, ya no forza a nadie 492 00:21:40,259 --> 00:21:41,900 iré a mi vacío, se acabó 493 00:21:41,900 --> 00:21:43,579 ¿vale? 494 00:21:45,059 --> 00:21:46,220 bueno entonces aprovechamos 495 00:21:46,220 --> 00:21:48,220 aquí porque hay cosas de interfaces que no hemos contado 496 00:21:48,220 --> 00:21:50,000 es que no da tiempo a todo, aprovechamos aquí 497 00:21:50,000 --> 00:21:51,720 para decir que 498 00:21:51,720 --> 00:21:54,160 las interfaces pueden tener métodos estáticos 499 00:21:54,160 --> 00:21:55,259 pueden tenerlos, no hay problema 500 00:21:55,259 --> 00:21:57,619 en ese caso hay que darles un contenido 501 00:21:57,619 --> 00:22:00,440 no los puedo dejar vacíos 502 00:22:00,440 --> 00:22:02,059 y el uso de ponernos 503 00:22:02,059 --> 00:22:04,680 métodos estáticos ahí es meter ahí unas funcionalidades 504 00:22:04,680 --> 00:22:06,420 pues hacer cosas concretas 505 00:22:06,420 --> 00:22:07,619 útiles, unas utilidades 506 00:22:07,619 --> 00:22:10,079 que a lo mejor va a usar la aplicación 507 00:22:10,079 --> 00:22:11,480 entonces yo las meto en una interfaz 508 00:22:11,480 --> 00:22:13,160 y las puedo llamar con el nombre de interfaz 509 00:22:13,160 --> 00:22:15,519 podermístico.activarpoder y ya está 510 00:22:15,519 --> 00:22:17,500 no las llamo asociadas a ningún objeto 511 00:22:17,500 --> 00:22:19,200 entonces bueno 512 00:22:19,200 --> 00:22:21,559 para eso pueden ser útiles esos métodos 513 00:22:21,559 --> 00:22:23,519 para meter aquí unas funcionalidades 514 00:22:23,519 --> 00:22:25,680 concretas para poder llamarlas desde cualquier 515 00:22:25,680 --> 00:22:27,200 sitio con el nombre de la interfaz 516 00:22:27,200 --> 00:22:29,839 igual que las public static 517 00:22:29,839 --> 00:22:31,619 final variables 518 00:22:31,619 --> 00:22:33,440 que ponemos aquí, pues constantes 519 00:22:33,440 --> 00:22:35,539 que yo pueda a lo mejor llamar desde 520 00:22:35,539 --> 00:22:37,819 cualquier sitio porque son útiles 521 00:22:37,819 --> 00:22:40,480 bueno pues entonces 522 00:22:40,480 --> 00:22:41,940 si desactivamos 523 00:22:41,940 --> 00:22:43,680 este static de aquí pues entonces 524 00:22:43,680 --> 00:22:44,900 esto ya 525 00:22:44,900 --> 00:22:46,519 Lo puedo quitar 526 00:22:46,519 --> 00:22:50,599 Y esto ya fuera 527 00:22:50,599 --> 00:22:54,059 Ya se queda esto así 528 00:22:54,059 --> 00:22:57,000 Bueno, pues el dragón y el resto 529 00:22:57,000 --> 00:22:59,539 Serán parecidos, entonces voy a hacer un copia y pega 530 00:22:59,539 --> 00:23:00,119 Y ya está 531 00:23:00,119 --> 00:23:09,250 Dragón, este va a ser el elfo 532 00:23:09,250 --> 00:23:18,279 Y este va a ser este 533 00:23:18,279 --> 00:23:19,740 Entonces 534 00:23:19,740 --> 00:23:23,940 El elfo, pues, ala 535 00:23:23,940 --> 00:23:25,779 El color 536 00:23:25,779 --> 00:23:27,579 No le cambio nada 537 00:23:27,579 --> 00:23:28,140 Ya está 538 00:23:28,140 --> 00:23:31,299 Este es el elfo y el unicornio 539 00:23:31,299 --> 00:23:31,920 Pues lo mismo 540 00:23:31,920 --> 00:23:34,250 Bueno 541 00:23:34,250 --> 00:23:37,690 Cambio el mensajito y ya está 542 00:23:37,690 --> 00:23:54,759 ¡Hala! Pues ya están las 543 00:23:54,759 --> 00:23:55,960 Ups 544 00:23:55,960 --> 00:23:58,619 Ya están las tres clases 545 00:23:58,619 --> 00:24:01,119 Estas de aquí 546 00:24:01,119 --> 00:24:05,480 ¿Vale? 547 00:24:09,490 --> 00:24:11,910 Y ahora ya un array con cuatro 548 00:24:11,910 --> 00:24:14,509 Mostrar descripción de todas 549 00:24:14,509 --> 00:24:16,410 Y solo de... Pues ya está 550 00:24:16,410 --> 00:24:18,250 Ahora ya hacemos un main 551 00:24:18,250 --> 00:24:34,490 Bueno, pues array de cuatro de ellas 552 00:24:34,490 --> 00:24:36,109 Como todas heredan 553 00:24:36,109 --> 00:24:38,130 De criatura mística 554 00:24:38,130 --> 00:24:40,490 Pues la raíz será de esto, obviamente 555 00:24:40,490 --> 00:24:44,119 Una raíz de esto 556 00:24:44,119 --> 00:24:46,400 Y ahí puede caer cualquier cosa 557 00:24:46,400 --> 00:24:47,500 Que lo herede, cualquiera 558 00:24:47,500 --> 00:24:53,039 Como queremos solo cuatro 559 00:24:53,039 --> 00:24:54,160 ¿Vale? 560 00:24:56,500 --> 00:25:21,259 Uy, ala 561 00:25:21,259 --> 00:25:24,160 Cuatro queremos, hemos dicho pues 562 00:25:24,160 --> 00:25:25,900 Dos dragones 563 00:25:25,900 --> 00:25:27,019 Al menos uno de cada 564 00:25:27,019 --> 00:25:28,920 ¿No? Decía 565 00:25:28,920 --> 00:25:32,279 Al menos uno de cada 566 00:25:32,279 --> 00:25:42,220 Pues nada, en criaturas cero 567 00:25:42,220 --> 00:25:43,359 Pues podemos meter 568 00:25:43,359 --> 00:25:45,420 Cualquiera de las tres 569 00:25:45,420 --> 00:26:25,250 Ah, ya está el array 570 00:26:25,250 --> 00:26:30,000 Y ahora, de nuevo, hay que recorrer el array 571 00:26:30,000 --> 00:26:33,500 Hay que recorrer el array para hacer lo siguiente 572 00:26:33,500 --> 00:26:34,160 ¿Qué hay que hacer? 573 00:26:35,359 --> 00:26:36,519 Describir cualquiera de ellas 574 00:26:36,519 --> 00:26:39,660 Bueno, no le he puesto valores, los he dejado por defecto, por rapidez 575 00:26:39,660 --> 00:26:42,119 Pues nada, hombre, habla que hay que recorrer el array 576 00:26:42,119 --> 00:26:44,059 Entonces cada uno ya lo recorre como quiere 577 00:26:44,059 --> 00:26:45,759 Como en este caso es para mostrar solo 578 00:26:45,759 --> 00:26:47,319 Pues si uno es vago 579 00:26:47,319 --> 00:26:48,859 Lo puede recorrer así 580 00:26:48,859 --> 00:26:52,680 para cada criatura mística 581 00:26:52,680 --> 00:26:54,579 que esté en mi array de criaturas 582 00:26:54,579 --> 00:26:58,309 ¿qué hago yo con cada una de ellas? 583 00:26:58,430 --> 00:26:59,630 pues con todas ellas 584 00:26:59,630 --> 00:27:01,549 voy a describirlo 585 00:27:01,549 --> 00:27:03,630 entonces afortunadamente 586 00:27:03,630 --> 00:27:05,650 como describir criatura está aquí 587 00:27:05,650 --> 00:27:07,650 está aquí 588 00:27:07,650 --> 00:27:09,930 aunque esté vacío, está ahí 589 00:27:09,930 --> 00:27:12,130 lo puedo llamar 590 00:27:12,130 --> 00:27:13,329 para el array 591 00:27:13,329 --> 00:27:16,230 el array está declarado como criatura mística 592 00:27:16,230 --> 00:27:18,309 entonces puedo llamar a cualquier método de criatura mística 593 00:27:18,309 --> 00:27:20,210 lo puedo llamar desde ahí 594 00:27:20,210 --> 00:27:22,710 vale, que ocurre 595 00:27:22,710 --> 00:27:24,329 que luego ya a la hora de ejecutarse 596 00:27:24,329 --> 00:27:25,829 el método que se va a ejecutar 597 00:27:25,829 --> 00:27:29,049 es la versión que esté en cada subclase 598 00:27:29,049 --> 00:27:30,869 esa es la versión 599 00:27:30,869 --> 00:27:32,910 que se va a ejecutar, la de la subclase 600 00:27:32,910 --> 00:27:34,609 pero es necesario 601 00:27:34,609 --> 00:27:36,529 que esté aquí, ahí tiene que estar 602 00:27:36,529 --> 00:27:38,630 sí o sí, porque si no 603 00:27:38,630 --> 00:27:39,930 no puedo llamarlo 604 00:27:39,930 --> 00:27:42,970 para una variable que está declarada de esta manera 605 00:27:42,970 --> 00:27:43,589 no puedo 606 00:27:43,589 --> 00:27:46,730 vale, y que otra cosa tenemos que hacer con 607 00:27:46,730 --> 00:27:48,569 los bichos estos 608 00:27:48,569 --> 00:27:52,289 Pues solo de algunos de ellos 609 00:27:52,289 --> 00:27:53,630 Solo de algunos de ellos 610 00:27:53,630 --> 00:27:55,490 Activar el poder 611 00:27:55,490 --> 00:27:56,849 Solo de algunos de ellos 612 00:27:56,849 --> 00:27:57,490 ¿De cuáles? 613 00:27:57,829 --> 00:27:59,150 De los que sean elfos 614 00:27:59,150 --> 00:28:01,309 ¿Cómo podemos saber si uno es elfo o no es elfo? 615 00:28:02,170 --> 00:28:03,289 Pues solo tenemos una manera 616 00:28:03,289 --> 00:28:05,869 Si esta criatura 617 00:28:05,869 --> 00:28:07,230 Se instanció 618 00:28:07,230 --> 00:28:10,539 Como elfo 619 00:28:10,539 --> 00:28:11,779 Solo en ese caso 620 00:28:11,779 --> 00:28:15,670 Pues ya está 621 00:28:15,670 --> 00:28:22,430 Y no necesito hacer un casting 622 00:28:22,430 --> 00:28:23,329 A elfo ni nada 623 00:28:23,329 --> 00:28:24,589 Porque activar poder 624 00:28:24,589 --> 00:28:26,069 activar poder 625 00:28:26,069 --> 00:28:28,490 está en criatura mística 626 00:28:28,490 --> 00:28:30,289 a través de poder místico 627 00:28:30,289 --> 00:28:32,650 está ahí, no necesito hacer ningún casting ni nada 628 00:28:32,650 --> 00:28:37,460 vale, entonces si yo ejecuto eso 629 00:28:37,460 --> 00:28:39,200 bueno, me van a salir los valores por defecto 630 00:28:39,200 --> 00:28:41,660 que son null para los nombres y todo eso 631 00:28:41,660 --> 00:28:43,900 pero bueno, es lo de menos 632 00:28:43,900 --> 00:28:55,769 esta es 633 00:28:55,769 --> 00:28:57,269 la descripción del dragón 634 00:28:57,269 --> 00:28:59,210 esta es la descripción del elfo 635 00:28:59,210 --> 00:29:00,950 este es el poder del elfo 636 00:29:00,950 --> 00:29:03,109 la descripción del unicornio 637 00:29:03,109 --> 00:29:05,170 y la descripción del dragón, otra vez 638 00:29:05,170 --> 00:29:08,130 Como no le he puesto valores en las propiedades 639 00:29:08,130 --> 00:29:09,430 Pues son valores por defecto, pero 640 00:29:09,430 --> 00:29:10,950 Nos da igual 641 00:29:10,950 --> 00:29:13,869 Vale, pues ya está 642 00:29:13,869 --> 00:29:15,690 Pues este 643 00:29:15,690 --> 00:29:16,890 Si no me he equivocado 644 00:29:16,890 --> 00:29:18,950 Es esto de aquí 645 00:29:18,950 --> 00:29:26,099 ¿Vale? Bueno 646 00:29:26,099 --> 00:29:29,400 ¿Ninguna pregunta de este ejercicio?