1 00:00:00,240 --> 00:00:06,740 Vale, entonces, ya estamos grabando, etc, etc, si me dais la autorización, si habláis 2 00:00:06,740 --> 00:00:16,179 Hasta aquí hemos visto el estructura de constructores, la herencia, etc, etc, como se llaman, vale 3 00:00:16,179 --> 00:00:24,980 Cuando hablamos de herencia, tenemos en mente también, o sea, se crean también algunos efectos, algunos conceptos, vale 4 00:00:24,980 --> 00:00:30,359 Que tenemos que tener en cuenta para poder usar de forma eficiente la herencia 5 00:00:30,359 --> 00:00:37,359 Uno de estos son el concepto de shadowing y overriding, vale, que son más o menos lo mismo 6 00:00:37,359 --> 00:00:45,820 Pero uno pensado sobre las variables y otro pensado sobre los métodos, si 7 00:00:45,820 --> 00:00:52,460 La idea es de poder modificar los elementos de la clase base, o sea, lo que tengo en la clase base 8 00:00:52,460 --> 00:00:54,960 Sobrescribiendo, reescribiendo una frase 9 00:00:54,980 --> 00:00:57,800 Una parte del código en una clase hija, vale 10 00:00:57,800 --> 00:01:05,439 Si esto lo hago haciendo un atributo de la clase hija, de la clase, de la subclase 11 00:01:05,439 --> 00:01:12,840 Que tiene el mismo nombre de un atributo de una superclase, esto se llama shadowing, vale 12 00:01:12,840 --> 00:01:22,240 Estoy ocultando en un cierto sentido, haciendo sombra al atributo de la superclase 13 00:01:22,240 --> 00:01:24,960 Renombrándolo, creando un nombre 14 00:01:24,980 --> 00:01:30,140 Con el mismo nombre en la subclase, vale, y ahora hacemos un ejemplo 15 00:01:30,140 --> 00:01:36,540 Si en vez de esto lo hago con el método, o sea, en una subclase creo un método que tiene la misma 16 00:01:36,540 --> 00:01:42,280 La misma signatura, la misma firma, que un método de la superclase 17 00:01:42,280 --> 00:01:47,680 Lo que estoy haciendo es overriding, que es lo que acabamos de hacer en el ejemplo este de aquí 18 00:01:47,680 --> 00:01:53,980 Que si, lo veis, vale, aquí, donde ya he creado animal, que tiene el método presentarse 19 00:01:54,980 --> 00:02:03,700 Y luego en felino, que es una subclase de animal, he creado otra vez el mismo método con la misma firma 20 00:02:03,700 --> 00:02:08,060 Lo que estoy haciendo es sobreescribir el otro método, vale 21 00:02:08,060 --> 00:02:13,099 Y entonces los felinos usarán esto en vez de utilizar el de animal 22 00:02:13,099 --> 00:02:19,120 Como el de toString, cuando nosotros teníamos el toString de object 23 00:02:19,120 --> 00:02:24,620 Y lo que hacíamos es poner un toString nuestro con ese formato y con esa firma 24 00:02:24,979 --> 00:02:29,119 Y allí le hacemos hacer lo que nos da la gana, lo que estamos haciendo es sobreescribir el toString 25 00:02:29,119 --> 00:02:35,780 De esa forma, cuando otros métodos llaman el toString pensando que sea un object 26 00:02:35,780 --> 00:02:41,979 Si yo soy una clase que hereda de object, porque toda clase hereda de object al fin y al cabo 27 00:02:41,979 --> 00:02:47,579 Y he sobreescrito el toString, voy a utilizar el toString de mi clase en vez que el de object 28 00:02:47,579 --> 00:02:52,199 Y entonces me escribe las cosas bonitas, exactamente, vale 29 00:02:54,979 --> 00:03:01,939 Y aquí, entonces, shadowing, ejemplo de shadowing, vale 30 00:03:01,939 --> 00:03:10,759 Tengo una clase persona que tiene como nombre un string, vale 31 00:03:10,759 --> 00:03:15,299 Y luego me creo una clase alumno que extiende persona 32 00:03:15,299 --> 00:03:24,299 Y dentro de aquí, sobreescribo, oculto, nombre con un atributo distinto 33 00:03:24,980 --> 00:03:29,620 O sea, que si yo lo considero como persona, el nombre es un string 34 00:03:29,620 --> 00:03:34,100 Pero si lo considero como alumno, el nombre ya no es un string, es un int 35 00:03:34,100 --> 00:03:38,500 ¿Vale? Porque los alumnos no tienen nombre, tienen un número de identificación 36 00:03:38,500 --> 00:03:42,140 Puede ser también un mismo 37 00:03:42,140 --> 00:03:47,580 Lo que cambia es el nombre del atributo 38 00:03:47,580 --> 00:03:52,880 El nombre del atributo hace como sombra al otro, porque cuando yo ahora estoy en alumno y pido nombre 39 00:03:52,880 --> 00:03:54,960 Voy a buscar este nombre, no el otro 40 00:03:54,980 --> 00:04:03,860 Entonces, si ahora en un test lo que creo es un alumno y una persona, vale 41 00:04:03,860 --> 00:04:11,740 Y luego llamo para alumno y para nombre, fijaos que en este caso sí tiene que ver, vale 42 00:04:11,740 --> 00:04:19,000 Tiene que ver el tipo de la referencia, no el tipo de la instancia 43 00:04:19,000 --> 00:04:23,259 Este es un alumno, pero he guardado en una clase persona 44 00:04:23,259 --> 00:04:24,879 Este señor de aquí 45 00:04:24,980 --> 00:04:26,780 Me devuelve Juan 46 00:04:26,780 --> 00:04:28,700 Este señor de aquí 47 00:04:28,700 --> 00:04:30,819 Me devuelve un numerito 48 00:04:30,819 --> 00:04:32,620 ¿Sí? 49 00:04:33,060 --> 00:04:34,720 O sea, que es parecido al otro 50 00:04:34,720 --> 00:04:36,100 Pero en este caso 51 00:04:36,100 --> 00:04:39,319 No cuenta la instancia por sí mismo 52 00:04:39,319 --> 00:04:41,300 Sino la referencia a la que estoy utilizando 53 00:04:41,300 --> 00:04:42,280 ¿Sí? 54 00:04:42,460 --> 00:04:43,400 Justo para complicar 55 00:04:43,400 --> 00:04:47,340 En mi experiencia, el shadowing se ve bastante menos 56 00:04:47,340 --> 00:04:48,439 ¿Vale? 57 00:04:48,500 --> 00:04:49,560 Con respecto al overreading 58 00:04:49,560 --> 00:04:51,240 El overreading sí que se ve un montón 59 00:04:51,240 --> 00:04:52,660 Pero el shadowing 60 00:04:52,660 --> 00:04:54,740 Existerá 61 00:04:54,740 --> 00:04:55,240 ¿Vale? 62 00:04:55,420 --> 00:04:56,280 Pero normalmente 63 00:04:56,280 --> 00:04:58,139 Tiene un sentido un poco raro 64 00:04:58,139 --> 00:04:58,819 ¿Sí? 65 00:04:58,819 --> 00:04:59,100 ¿Sí? 66 00:05:06,100 --> 00:05:06,540 Sí 67 00:05:06,540 --> 00:05:07,879 De hecho 68 00:05:07,879 --> 00:05:10,439 Vale, si definimos 69 00:05:10,439 --> 00:05:13,180 Aquí tenéis ejemplo de cómo se llama la cosa 70 00:05:13,180 --> 00:05:17,920 Si definimos una subclase con un atributo que es el mismo nombre 71 00:05:17,920 --> 00:05:19,860 Y tipo que la superclase 72 00:05:19,860 --> 00:05:20,620 ¿Vale? 73 00:05:20,759 --> 00:05:22,960 La de la superclase que es de oculta 74 00:05:22,960 --> 00:05:23,180 ¿Sí? 75 00:05:23,579 --> 00:05:24,699 También se puede cambiar el tipo 76 00:05:24,699 --> 00:05:28,360 Podemos acceder a la variable de la subclase 77 00:05:28,360 --> 00:05:30,219 O de la superclase usando disesuper 78 00:05:30,219 --> 00:05:30,860 ¿Vale? 79 00:05:31,240 --> 00:05:32,259 Esto quiere decir que 80 00:05:32,259 --> 00:05:35,199 Si yo tengo una situación como esta aquí 81 00:05:35,199 --> 00:05:35,500 ¿Vale? 82 00:05:35,539 --> 00:05:36,539 Que tengo transporte 83 00:05:36,539 --> 00:05:38,079 Que puede ser tren o un vehículo 84 00:05:38,079 --> 00:05:40,120 Y dentro del vehículo puede ser moto y coche 85 00:05:40,120 --> 00:05:40,899 ¿Vale? 86 00:05:41,399 --> 00:05:42,539 Entonces tengo estos tres 87 00:05:42,539 --> 00:05:45,159 Si yo uso nombre 88 00:05:45,159 --> 00:05:46,560 Este es el nombre del coche 89 00:05:46,560 --> 00:05:47,139 Ah, perdón 90 00:05:47,139 --> 00:05:47,719 Esto son 91 00:05:47,719 --> 00:05:49,519 Es el mismo 92 00:05:49,519 --> 00:05:51,439 Redeclaro nombre 93 00:05:51,439 --> 00:05:53,500 En cada uno de estos tres 94 00:05:53,500 --> 00:05:55,579 Niveles 95 00:05:55,579 --> 00:05:55,839 ¿Vale? 96 00:05:56,740 --> 00:05:58,420 Entonces si yo uso nombre 97 00:05:58,420 --> 00:06:01,000 Estoy accediendo al nombre del coche 98 00:06:01,000 --> 00:06:03,920 Si yo uso dis.nombre 99 00:06:03,920 --> 00:06:05,980 Estoy utilizando siempre el coche 100 00:06:05,980 --> 00:06:06,220 ¿Vale? 101 00:06:06,240 --> 00:06:07,279 Estoy en la clase coche 102 00:06:07,279 --> 00:06:09,600 Si uso super.nombre 103 00:06:09,600 --> 00:06:11,720 Me estoy yendo al vehículo 104 00:06:11,720 --> 00:06:15,319 Entonces es como si estuviera utilizando este 105 00:06:15,319 --> 00:06:18,959 Atributo en vez que este de aquí 106 00:06:18,959 --> 00:06:19,879 ¿Sí? 107 00:06:20,839 --> 00:06:22,779 Y si hago algo como esto 108 00:06:22,779 --> 00:06:23,399 Vehículo 109 00:06:23,400 --> 00:06:24,960 De dis.nombre 110 00:06:24,960 --> 00:06:26,860 Accedería al vehículo del nombre 111 00:06:26,860 --> 00:06:28,720 Que es lo que he intentado hacer con el 112 00:06:28,720 --> 00:06:30,000 Overriding 113 00:06:30,000 --> 00:06:30,560 ¿Vale? 114 00:06:30,640 --> 00:06:32,860 Con el ejercicio de antes 115 00:06:32,860 --> 00:06:34,740 Que pero como usa la instancia 116 00:06:34,740 --> 00:06:36,440 En vez de utilizar el tipo de vínculo 117 00:06:36,440 --> 00:06:37,020 Pues no funciona 118 00:06:37,020 --> 00:06:37,720 ¿Sí? 119 00:06:39,480 --> 00:06:40,780 Si quisiera 120 00:06:40,780 --> 00:06:43,720 Subir hasta este nivel de aquí 121 00:06:43,720 --> 00:06:44,660 O sea hacer 122 00:06:44,660 --> 00:06:46,400 Pillar esta 123 00:06:46,400 --> 00:06:48,480 Variable de aquí 124 00:06:48,480 --> 00:06:49,320 Este atributo de aquí 125 00:06:49,320 --> 00:06:51,420 Debería hacerlo de esta forma 126 00:06:51,420 --> 00:06:52,700 Cuidado que es super.super 127 00:06:52,700 --> 00:06:53,380 No se puede hacer 128 00:06:53,400 --> 00:06:55,280 No existe super.super 129 00:06:55,280 --> 00:06:56,880 Pero existe el 130 00:06:56,880 --> 00:06:57,660 Píllame el dis 131 00:06:57,660 --> 00:06:59,320 Tráctamelo como un transporte 132 00:06:59,320 --> 00:07:00,000 Acceder al número 133 00:07:00,000 --> 00:07:08,580 Vehículo de super 134 00:07:08,580 --> 00:07:09,340 No 135 00:07:09,340 --> 00:07:10,040 No creo 136 00:07:10,040 --> 00:07:11,140 No creo que 137 00:07:11,140 --> 00:07:13,440 Que tendría mucho sentido 138 00:07:13,440 --> 00:07:14,580 A lo mejor hasta se funciona 139 00:07:14,580 --> 00:07:14,900 Pero 140 00:07:14,900 --> 00:07:17,560 En el momento que haces un cast explícito 141 00:07:17,560 --> 00:07:19,440 Te compensa decir cast explícito 142 00:07:19,440 --> 00:07:20,200 De este objeto 143 00:07:20,200 --> 00:07:21,240 De esta instancia que tienes 144 00:07:21,240 --> 00:07:22,360 ¿Vale? 145 00:07:23,400 --> 00:07:25,180 No sé si 146 00:07:25,180 --> 00:07:27,780 Si vehículo de super te funcionaría 147 00:07:27,780 --> 00:07:28,820 Puede ser 148 00:07:28,820 --> 00:07:30,560 No lo sé 149 00:07:30,560 --> 00:07:31,560 No le probo 150 00:07:31,560 --> 00:07:32,120 ¿Vale? 151 00:07:32,520 --> 00:07:35,120 La otra cosa es la reescritura de método 152 00:07:35,120 --> 00:07:35,720 ¿Vale? 153 00:07:36,740 --> 00:07:38,140 Que me sirve normalmente 154 00:07:38,140 --> 00:07:39,560 Como lo que hemos visto nosotros 155 00:07:39,560 --> 00:07:42,460 Tú cuando 156 00:07:42,460 --> 00:07:44,420 Cuando tienes una clase ya hecha 157 00:07:44,420 --> 00:07:45,740 Y la extendes 158 00:07:45,740 --> 00:07:47,340 Estás importando sus métodos 159 00:07:47,340 --> 00:07:48,440 Pero es posible 160 00:07:48,440 --> 00:07:50,480 Que la clase que estás extendiendo tú 161 00:07:50,480 --> 00:07:52,460 Estos métodos se queden cortos 162 00:07:52,460 --> 00:07:53,380 Tanto por eso 163 00:07:53,400 --> 00:07:54,960 Que a lo mejor quieres añadir 164 00:07:54,960 --> 00:07:56,120 Algo de funcionalidad 165 00:07:56,120 --> 00:07:58,460 O porque quieres especificar más 166 00:07:58,460 --> 00:08:00,440 La funcionalidad de este método 167 00:08:00,440 --> 00:08:01,420 Me explico 168 00:08:01,420 --> 00:08:02,940 En el ejemplo que hemos hecho nosotros 169 00:08:02,940 --> 00:08:04,660 Los animales decían solo su nombre 170 00:08:04,660 --> 00:08:06,400 Porque tenían acceso solo a su nombre 171 00:08:06,400 --> 00:08:08,440 En el momento que tú estás en el gato 172 00:08:08,440 --> 00:08:10,720 El gato tiene acceso a más información 173 00:08:10,720 --> 00:08:11,560 Entonces 174 00:08:11,560 --> 00:08:13,940 Quieres poder hacer más cosas 175 00:08:13,940 --> 00:08:15,380 A lo mejor con la información que tiene 176 00:08:15,380 --> 00:08:17,480 Puede hacer búsqueda de una base de datos 177 00:08:17,480 --> 00:08:18,040 Que se yo 178 00:08:18,040 --> 00:08:20,280 Puede hacer cosas más adelantadas 179 00:08:20,280 --> 00:08:22,740 O simplemente utilizar también 180 00:08:22,740 --> 00:08:23,980 Sus propias propiedades 181 00:08:23,980 --> 00:08:24,939 Sus propios atributos 182 00:08:24,939 --> 00:08:25,460 Para decir 183 00:08:25,460 --> 00:08:27,060 Oye mira y son esta cosa también 184 00:08:27,060 --> 00:08:28,740 En nuestro método 185 00:08:28,740 --> 00:08:29,819 Que era una presentación 186 00:08:29,819 --> 00:08:30,960 Era una descripción 187 00:08:30,960 --> 00:08:32,539 Pues un gato claramente 188 00:08:32,539 --> 00:08:34,080 Tiene más información para dar 189 00:08:34,080 --> 00:08:34,759 Que un animal 190 00:08:34,759 --> 00:08:35,980 Y por lo tanto 191 00:08:35,980 --> 00:08:38,139 Se puede sobre escribir en esta forma 192 00:08:38,139 --> 00:08:38,799 ¿Vale? 193 00:08:40,799 --> 00:08:41,659 Fijaos que 194 00:08:41,659 --> 00:08:43,100 Con arrancar 195 00:08:43,100 --> 00:08:44,360 Usa el método de coche 196 00:08:44,360 --> 00:08:45,820 Con dispunta arrancar 197 00:08:45,820 --> 00:08:46,460 El método de coche 198 00:08:46,460 --> 00:08:47,960 Con superpunta arrancar 199 00:08:47,960 --> 00:08:49,259 El método del vehículo 200 00:08:49,259 --> 00:08:51,860 Pero por arriba del vehículo 201 00:08:51,860 --> 00:08:52,620 Pues 202 00:08:52,620 --> 00:08:53,399 Parece ser 203 00:08:53,399 --> 00:08:54,740 Que es más complejo llegar 204 00:08:54,740 --> 00:08:55,600 ¿Vale? 205 00:08:55,820 --> 00:08:56,399 Ahora luego 206 00:08:56,399 --> 00:08:58,480 Miraremos como se puede hacer 207 00:08:58,480 --> 00:08:59,240 Si se puede hacer 208 00:08:59,240 --> 00:09:00,060 ¿Vale? 209 00:09:01,419 --> 00:09:01,940 Entonces 210 00:09:01,940 --> 00:09:02,919 Ejemplo de 211 00:09:02,919 --> 00:09:04,100 Overriding 212 00:09:04,100 --> 00:09:04,799 ¿Vale? 213 00:09:05,700 --> 00:09:07,899 Y aquí imaginaos que tengo esta 214 00:09:07,899 --> 00:09:09,659 Recursos 215 00:09:09,659 --> 00:09:10,539 Aula y ordenador 216 00:09:10,539 --> 00:09:11,379 Pero que 217 00:09:11,379 --> 00:09:14,000 Decir descripción de aula 218 00:09:14,000 --> 00:09:15,720 Es distinto de los demás 219 00:09:15,720 --> 00:09:18,000 Pues entonces en recurso 220 00:09:18,000 --> 00:09:19,340 Pongo decir descripción 221 00:09:19,340 --> 00:09:20,000 El azul 222 00:09:20,000 --> 00:09:20,740 ¿Vale? 223 00:09:21,940 --> 00:09:22,600 Y el ordenador 224 00:09:22,620 --> 00:09:25,120 Heredará directamente este de aquí 225 00:09:25,120 --> 00:09:25,720 Tendrá 226 00:09:25,720 --> 00:09:27,700 Hará lo mismo que el recurso 227 00:09:27,700 --> 00:09:29,060 Pero en el aula 228 00:09:29,060 --> 00:09:30,360 Hago un 229 00:09:30,360 --> 00:09:32,679 ¿Cómo se dice? 230 00:09:32,840 --> 00:09:34,480 Una sobrescripción 231 00:09:34,480 --> 00:09:34,679 ¿Vale? 232 00:09:35,000 --> 00:09:35,720 Sobrescribo 233 00:09:35,720 --> 00:09:36,879 Entonces 234 00:09:36,879 --> 00:09:39,080 Ahora tengo mi propio método 235 00:09:39,080 --> 00:09:39,480 ¿Vale? 236 00:09:39,820 --> 00:09:41,120 Si dentro de aula 237 00:09:41,120 --> 00:09:42,299 Un objeto aula 238 00:09:42,299 --> 00:09:44,440 Uso this.decir descripción 239 00:09:44,440 --> 00:09:46,360 Estaré usando este método de aquí 240 00:09:46,360 --> 00:09:49,060 Si uso super.decir descripción 241 00:09:49,060 --> 00:09:50,720 Estaré usando este método de aquí 242 00:09:52,620 --> 00:09:52,899 ¿Sí? 243 00:09:54,860 --> 00:09:56,000 Normalmente dentro 244 00:09:56,000 --> 00:09:57,980 La aula está en un recurso 245 00:09:57,980 --> 00:09:59,279 Puede usar el suyo 246 00:09:59,279 --> 00:10:00,060 O 247 00:10:00,060 --> 00:10:02,779 El método 248 00:10:02,779 --> 00:10:04,480 Que estaba sobrescribiendo 249 00:10:04,480 --> 00:10:07,500 Cuando tú heredas desde otra 250 00:10:07,500 --> 00:10:09,019 Ella tendrá sus métodos 251 00:10:09,019 --> 00:10:12,060 Y tú puedes decidir de sobrescribir sus métodos 252 00:10:12,060 --> 00:10:12,279 ¿Vale? 253 00:10:14,240 --> 00:10:15,080 De hecho 254 00:10:15,080 --> 00:10:17,539 Probablemente tendría poco sentido 255 00:10:17,539 --> 00:10:19,460 Irse por arriba todavía más 256 00:10:19,460 --> 00:10:19,899 ¿Vale? 257 00:10:19,899 --> 00:10:20,860 Porque si tú eres un aula 258 00:10:20,860 --> 00:10:21,220 Y 259 00:10:21,220 --> 00:10:22,159 Ehm 260 00:10:22,159 --> 00:10:25,299 , sobrescribes un método de recurso 261 00:10:25,299 --> 00:10:28,120 Es porque tú quieres hacer algo más específico de recurso 262 00:10:28,120 --> 00:10:30,799 Y puedes elegir si usar el tuyo más específico 263 00:10:30,799 --> 00:10:31,839 O el de tu padre 264 00:10:31,839 --> 00:10:34,139 Pero el de tu abuelo tendría poco sentido 265 00:10:34,139 --> 00:10:35,459 Será el tu padre que 266 00:10:35,459 --> 00:10:36,839 Si quieres usar 267 00:10:36,839 --> 00:10:37,980 Usará el del abuelo 268 00:10:37,980 --> 00:10:38,899 Con super.er 269 00:10:38,899 --> 00:10:46,699 Entonces al mandar un mensaje a un objeto 270 00:10:46,699 --> 00:10:47,860 El método seleccionado 271 00:10:47,860 --> 00:10:49,879 Depende de la clase real 272 00:10:49,879 --> 00:10:51,839 De la que el objeto es instancia 273 00:10:51,839 --> 00:10:52,120 ¿Vale? 274 00:10:52,159 --> 00:10:53,240 Lo que decíamos antes 275 00:10:53,240 --> 00:10:53,740 ¿Vale? 276 00:10:54,240 --> 00:10:56,799 Que no es lo que pasa en el shadowing 277 00:10:56,799 --> 00:10:58,100 En el shadowing 278 00:10:58,100 --> 00:10:59,699 Hemos visto que depende 279 00:10:59,699 --> 00:11:01,719 Del tipo de 280 00:11:01,719 --> 00:11:03,339 Ehm 281 00:11:03,339 --> 00:11:06,279 Del tipo de variable que tú tienes 282 00:11:06,279 --> 00:11:08,199 De la referencia 283 00:11:08,199 --> 00:11:09,439 Digamos en un cierto sentido 284 00:11:09,439 --> 00:11:10,579 Sin embargo 285 00:11:10,579 --> 00:11:12,399 Aquí en el overreading 286 00:11:12,399 --> 00:11:13,839 Se va a mirar 287 00:11:13,839 --> 00:11:16,480 El tipo de la instancia real 288 00:11:16,480 --> 00:11:17,039 ¿Vale? 289 00:11:18,339 --> 00:11:19,339 La clase de referencia 290 00:11:19,339 --> 00:11:20,299 La que está asignado 291 00:11:20,299 --> 00:11:20,959 ¿Vale? 292 00:11:21,000 --> 00:11:22,139 Como es el caso de los intubos 293 00:11:22,159 --> 00:11:22,959 ¿Sí? 294 00:11:23,240 --> 00:11:24,579 Entonces en los atributos 295 00:11:24,579 --> 00:11:25,759 En los shadowing 296 00:11:25,759 --> 00:11:27,159 Se hace referencia 297 00:11:27,159 --> 00:11:31,299 Al tipo de la variable 298 00:11:31,299 --> 00:11:33,919 Mientras aquí se hace referencia 299 00:11:33,919 --> 00:11:35,459 Al objeto de la instancia real 300 00:11:35,459 --> 00:11:36,679 ¿Sí? 301 00:11:39,539 --> 00:11:40,100 Super 302 00:11:40,100 --> 00:11:40,819 ¿Vale? 303 00:11:41,059 --> 00:11:42,919 Este de aquí ya lo hemos visto más o menos 304 00:11:42,919 --> 00:11:45,279 Es una referencia al objeto actual 305 00:11:45,279 --> 00:11:47,679 Como si fuera una instancia de una superclase 306 00:11:47,679 --> 00:11:47,980 ¿Vale? 307 00:11:48,039 --> 00:11:48,899 Es como un dis 308 00:11:48,899 --> 00:11:50,819 Pero pensado como 309 00:11:50,819 --> 00:11:52,139 Soy de la clase real 310 00:11:52,159 --> 00:11:52,899 Sé que extendo 311 00:11:52,899 --> 00:11:54,259 ¿Sí? 312 00:11:55,339 --> 00:11:55,679 Y 313 00:11:55,679 --> 00:11:57,919 Y podemos utilizar por ejemplo 314 00:11:57,919 --> 00:11:59,379 Super punto imprime 315 00:11:59,379 --> 00:12:00,600 Para utilizar el imprime 316 00:12:00,600 --> 00:12:01,399 Como si fuera 317 00:12:01,399 --> 00:12:02,419 De la 318 00:12:02,419 --> 00:12:03,059 De la 319 00:12:03,059 --> 00:12:04,639 De la clase persona 320 00:12:04,639 --> 00:12:05,179 Por ejemplo 321 00:12:05,179 --> 00:12:06,600 ¿Sí? 322 00:12:09,600 --> 00:12:11,639 Tenemos dos ideas 323 00:12:11,639 --> 00:12:13,879 Dos funciones del super 324 00:12:13,879 --> 00:12:14,240 ¿Vale? 325 00:12:14,339 --> 00:12:15,919 El super como método así 326 00:12:15,919 --> 00:12:17,559 Que en realidad está llamando 327 00:12:17,559 --> 00:12:18,620 El constructor 328 00:12:18,620 --> 00:12:19,759 De la 329 00:12:19,759 --> 00:12:20,839 De la superclase 330 00:12:20,839 --> 00:12:22,139 O superase 331 00:12:22,159 --> 00:12:23,219 Y casi en paréntesis 332 00:12:23,219 --> 00:12:24,860 Que es una referencia 333 00:12:24,860 --> 00:12:25,879 Es como el dis 334 00:12:25,879 --> 00:12:27,299 Pero para la superclase 335 00:12:27,299 --> 00:12:28,639 Considerando el dis 336 00:12:28,639 --> 00:12:30,459 Como una instancia de la superclase 337 00:12:30,459 --> 00:12:31,379 ¿Sí? 338 00:12:31,639 --> 00:12:32,899 Entonces podemos hacer 339 00:12:32,899 --> 00:12:33,819 Super punto método 340 00:12:33,819 --> 00:12:34,919 Super punto atributo 341 00:12:34,919 --> 00:12:36,959 Esto para acceder a un método 342 00:12:36,959 --> 00:12:38,339 De la superclase 343 00:12:38,339 --> 00:12:39,980 O esto para acceder 344 00:12:39,980 --> 00:12:40,980 A un atributo 345 00:12:40,980 --> 00:12:42,079 De la superclase 346 00:12:42,079 --> 00:12:44,179 ¿Sí? 347 00:12:48,860 --> 00:12:50,319 Y finalmente 348 00:12:50,319 --> 00:12:51,259 ¿Vale? 349 00:12:52,159 --> 00:12:52,439 No es 350 00:12:52,439 --> 00:12:55,299 Últimas dos referencias 351 00:12:55,299 --> 00:12:57,339 Overriding versus overloading 352 00:12:57,339 --> 00:12:57,879 ¿Vale? 353 00:12:57,899 --> 00:12:59,480 Nosotros tenemos dos conceptos 354 00:12:59,480 --> 00:13:00,319 Ahora con over 355 00:13:00,319 --> 00:13:01,839 Uno es 356 00:13:01,839 --> 00:13:02,899 Sobrescribir 357 00:13:02,899 --> 00:13:04,379 Y uno es sobrecargar 358 00:13:04,379 --> 00:13:04,819 ¿Vale? 359 00:13:04,959 --> 00:13:05,860 Hemos visto los dos 360 00:13:05,860 --> 00:13:07,639 Cuando hago sobrescribir 361 00:13:07,639 --> 00:13:09,079 Lo que estoy haciendo es 362 00:13:09,079 --> 00:13:11,219 Modificar la implementación 363 00:13:11,219 --> 00:13:11,719 De un 364 00:13:11,719 --> 00:13:13,759 De un 365 00:13:13,759 --> 00:13:15,819 Método que ya existe 366 00:13:15,819 --> 00:13:16,439 ¿Vale? 367 00:13:16,799 --> 00:13:18,079 El método de la superclase 368 00:13:18,079 --> 00:13:20,959 Mientras que cuando hago overloading 369 00:13:20,959 --> 00:13:21,899 Lo que estoy haciendo es 370 00:13:21,899 --> 00:13:22,139 Que el método de la superclase 371 00:13:22,139 --> 00:13:22,899 Tiene el mismo método 372 00:13:22,899 --> 00:13:24,080 Con el mismo nombre 373 00:13:24,080 --> 00:13:26,340 Tiene distinta firma 374 00:13:26,340 --> 00:13:27,480 Tiene distintas 375 00:13:27,480 --> 00:13:29,460 ¿Cómo se dice? 376 00:13:31,980 --> 00:13:33,019 Distinto parámetro 377 00:13:33,019 --> 00:13:33,399 Gracias 378 00:13:33,399 --> 00:13:36,139 Y de esta forma estoy sobrecargando 379 00:13:36,819 --> 00:13:38,039 La funcionalidad de este método 380 00:13:38,039 --> 00:13:40,299 Este método puede hacer cosas un poquito distintas 381 00:13:40,299 --> 00:13:41,720 Dependiendo de que 382 00:13:41,720 --> 00:13:43,740 Parámetros les pongo 383 00:13:43,740 --> 00:13:44,539 ¿Sí? 384 00:13:46,679 --> 00:13:47,019 Vale 385 00:13:47,019 --> 00:13:49,179 Y finalmente 386 00:13:49,179 --> 00:13:51,980 Instance of 387 00:13:52,139 --> 00:13:52,740 ¿Vale? 388 00:13:52,879 --> 00:13:54,559 Instance of es un comandito 389 00:13:54,559 --> 00:13:55,240 Es un operador 390 00:13:55,240 --> 00:13:55,899 ¿Vale? 391 00:13:55,939 --> 00:13:57,939 Que me permite preguntarme 392 00:13:57,939 --> 00:13:59,659 Si una cierta 393 00:13:59,659 --> 00:14:01,799 Variable 394 00:14:01,799 --> 00:14:03,039 Si una cierta referencia 395 00:14:03,039 --> 00:14:04,059 Si un cierto objeto 396 00:14:04,059 --> 00:14:05,639 Es una instancia 397 00:14:05,639 --> 00:14:06,819 De una clase 398 00:14:06,819 --> 00:14:07,779 ¿Vale? 399 00:14:08,120 --> 00:14:08,899 Por ejemplo 400 00:14:08,899 --> 00:14:10,659 Si yo aquí tengo 401 00:14:10,659 --> 00:14:12,620 Gato, gato 402 00:14:12,620 --> 00:14:13,539 Que es un gato 403 00:14:13,539 --> 00:14:14,039 ¿Vale? 404 00:14:14,139 --> 00:14:15,179 Y tengo que gato 405 00:14:15,179 --> 00:14:15,840 Extende animal 406 00:14:15,840 --> 00:14:16,759 Y perro 407 00:14:16,759 --> 00:14:17,399 Extende animal 408 00:14:17,399 --> 00:14:18,740 Me puedo preguntar 409 00:14:18,740 --> 00:14:19,379 Gato 410 00:14:19,379 --> 00:14:20,980 Instance of 411 00:14:20,980 --> 00:14:21,720 Animal 412 00:14:21,720 --> 00:14:23,600 Y esto me da true 413 00:14:23,600 --> 00:14:26,019 Si gato es una instancia del animal 414 00:14:26,019 --> 00:14:27,200 False 415 00:14:27,200 --> 00:14:28,240 Si gato 416 00:14:28,240 --> 00:14:29,440 Esta variable aquí 417 00:14:29,440 --> 00:14:30,800 No es una instancia del animal 418 00:14:30,800 --> 00:14:32,139 Y el resultado es true 419 00:14:32,139 --> 00:14:34,139 ¿Sí? 420 00:14:34,460 --> 00:14:35,980 Porque gato es un animal 421 00:14:35,980 --> 00:14:41,139 Porque a veces tú te 422 00:14:41,139 --> 00:14:42,480 Te quieres preguntar 423 00:14:42,480 --> 00:14:43,379 Tienes una variable 424 00:14:43,379 --> 00:14:45,060 Pero no sabes esta variable 425 00:14:45,060 --> 00:14:46,360 De que instancia es 426 00:14:46,360 --> 00:14:48,300 Y te quieres preguntar 427 00:14:48,300 --> 00:14:49,259 ¿Es de esta instancia o de esta? 428 00:14:50,519 --> 00:14:50,720 ¿Vale? 429 00:14:51,720 --> 00:14:53,360 Entonces dependiendo 430 00:14:53,360 --> 00:14:54,440 Esto daría true 431 00:14:54,440 --> 00:14:55,180 Esto daría true 432 00:14:55,180 --> 00:14:56,100 Esto daría false 433 00:14:56,100 --> 00:14:56,660 Creo 434 00:14:56,660 --> 00:14:59,480 Ahora lo miramos 435 00:14:59,480 --> 00:15:00,500 Ahora hacemos la prueba 436 00:15:00,500 --> 00:15:01,500 ¿Vale? 437 00:15:02,000 --> 00:15:02,940 ¿Por qué esto? 438 00:15:03,779 --> 00:15:05,160 Por lo que viene después 439 00:15:05,160 --> 00:15:07,100 Que es el polimorfismo 440 00:15:07,100 --> 00:15:08,420 ¿Vale? 441 00:15:10,060 --> 00:15:11,080 Dudas hasta aquí