1 00:00:00,440 --> 00:00:08,320 Entonces, hoy vamos a hablar de herencia y todo lo que digáis a partir de ahora, puesto que se está grabando, 2 00:00:09,240 --> 00:00:12,759 implica que me habéis autorizado a grabar vuestras voces, ¿vale? 3 00:00:12,859 --> 00:00:25,219 Entonces, hasta ahora, nosotros hemos estado hablando de objetos, hemos visto, aparte la parte de programación imperativa estructurada, ¿vale? 4 00:00:25,219 --> 00:00:29,740 Que me permite, sustancialmente, hacer las cosas, hacer el SIFU, WILE, etcétera, etcétera. 5 00:00:30,000 --> 00:00:34,840 Una vez que hemos visto esto aquí, hemos pasado al mundo de los objetos, a la programación orientada a objetos, 6 00:00:35,420 --> 00:00:40,939 hemos cambiado de paradigma, hemos pasado a un mundo un poquito distinto, 7 00:00:41,060 --> 00:00:49,879 donde ahora hacemos como conjuntos, paquetes, empaquetamos conceptos, ¿vale? 8 00:00:50,700 --> 00:00:59,980 Empaquetamos juntos las características, los atributos, los valores propios de estas entidades, 9 00:01:00,000 --> 00:01:04,840 de estas cosas que modelizamos, y el comportamiento de estas cosas. 10 00:01:05,019 --> 00:01:15,620 Entonces, creamos las clases. Las clases son moldes, son plantillas que me definen cómo se puede crear un objeto de esa clase. 11 00:01:16,000 --> 00:01:23,640 Es decir, cuáles son las características comunes y los comportamientos comunes a todos los objetos que yo estoy modelizando, 12 00:01:23,640 --> 00:01:29,980 siendo luego cada uno de los objetos una entidad propia y distinta y separada de los otros objetos. 13 00:01:30,000 --> 00:01:35,239 ¿Vale? Entonces, nosotros tenemos la clase, tenemos el objeto que es una instancia de una clase, 14 00:01:35,680 --> 00:01:45,099 ejemplo, la clase es coche, por lo tanto yo en la clase defino todo lo que es común a los coches, 15 00:01:45,480 --> 00:01:51,579 como por ejemplo sea el color, la matrícula, la velocidad, qué sé yo, lo que me interesa para mi sistema, 16 00:01:51,780 --> 00:01:58,519 sistemas distintos podrían ver el coche como cosas distintas, si yo estoy en una carrera, no me interesa el precio del coche, 17 00:01:58,519 --> 00:01:59,920 si yo soy un vehículo... 18 00:01:59,920 --> 00:02:05,420 el vendedor de coche, el vendedor de coche, pues me interesa el precio del coche, entonces lo pondré allí como característica. 19 00:02:05,420 --> 00:02:12,599 Más los funcionamientos del coche, todos los coches pueden encenderse, todos los coches pueden viajar, 20 00:02:12,599 --> 00:02:15,420 todos los coches pueden... y allí creo mis métodos. 21 00:02:15,420 --> 00:02:24,420 A este punto, cuando he creado una plantilla, puedo con esa plantilla, con este molde, hacer varios objetos que serán todos con la misma estructura, 22 00:02:24,420 --> 00:02:29,400 con los mismos comportamientos, pero los valores propios de cada atributo y de cada característica pues estará distinto. 23 00:02:29,400 --> 00:02:37,400 Todos los cuadrados son parecidos, todos tienen un lado, pero habrá el cuadrado del lado 3, el cuadrado del lado 7, 24 00:02:37,400 --> 00:02:44,400 que son dos cuadrados distintos. Es más, puede haber el cuadrado del lado 3 y otro cuadrado del lado 3 que son dos cuadrados distintos, 25 00:02:44,400 --> 00:02:50,400 son dos instancias distintas. Si hago algo en uno de los dos cuadrados, no afecta el otro cuadrado. 26 00:02:50,400 --> 00:02:52,400 ¿Dudas hasta aquí? 27 00:02:52,400 --> 00:02:58,400 Vale, dentro del mundo de la programación a objetos, está un... 28 00:02:59,400 --> 00:03:09,400 concepto que es muy útil a la hora de modelizar cosas como hemos hecho nosotros hasta ahora. 29 00:03:09,400 --> 00:03:15,400 Hemos, por ejemplo, hemos modelizado una escuela, dónde están los alumnos, las clases, etc. 30 00:03:15,400 --> 00:03:22,400 En estos contextos, hay veces, y para dar una introducción, luego lo vemos con más calma, 31 00:03:22,400 --> 00:03:29,400 en el que hay distintas clases que tienen algo parecido, 32 00:03:29,400 --> 00:03:33,400 cuidado, clases distintas que tienen una estructura parecida, 33 00:03:33,400 --> 00:03:42,400 es que yo me pregunto, ¿no podría esta estructura parecida, o condivisa, agruparla de alguna forma? 34 00:03:42,400 --> 00:03:44,400 Hago un ejemplo para que me entendáis. 35 00:03:44,400 --> 00:03:47,400 Alumno. ¿Alumno qué tiene de características? 36 00:03:47,400 --> 00:03:53,400 Pues tiene nombre, tiene edad, y tiene... qué sé yo, no lo sé. 37 00:03:53,400 --> 00:03:55,400 ¿Ves? 38 00:03:55,400 --> 00:03:56,400 Un ID. 39 00:03:56,400 --> 00:03:57,400 Un ID. 40 00:03:57,400 --> 00:03:58,400 Vale. 41 00:03:58,400 --> 00:03:59,400 Profesor. 42 00:03:59,400 --> 00:04:01,400 Profesor tiene nombre. 43 00:04:01,400 --> 00:04:02,400 Sí, también. 44 00:04:02,400 --> 00:04:03,400 Tiene edad. 45 00:04:03,400 --> 00:04:05,400 Tiene un ID. 46 00:04:05,400 --> 00:04:09,400 Entonces, profesor y alumno son muy parecidos. 47 00:04:09,400 --> 00:04:14,400 Cuando yo voy a crear estas dos clases, la clase alumno y la clase profesor, 48 00:04:14,400 --> 00:04:18,399 pues esta parte de aquí será prácticamente igual. 49 00:04:18,399 --> 00:04:21,399 Estoy perdiendo tiempo reescribiendo la misma cosa. 50 00:04:21,399 --> 00:04:23,399 Ahora, son tres variables, un minuto. 51 00:04:23,399 --> 00:04:27,399 Pero si fuera un trozo así enorme de código que es igual en las dos... 52 00:04:28,399 --> 00:04:31,399 En las dos clases, pues debería rehacerlo en las dos clases. 53 00:04:31,399 --> 00:04:36,399 Es más, si luego encuentro un error, lo tengo que cambiar en las dos clases. 54 00:04:36,399 --> 00:04:37,399 ¿Sí? 55 00:04:37,399 --> 00:04:40,399 Ahora, habrá también una parte que son distintos. 56 00:04:40,399 --> 00:04:41,399 El alumno tiene notas. 57 00:04:41,399 --> 00:04:43,399 El profesor tiene notas. 58 00:04:43,399 --> 00:04:44,399 No. 59 00:04:44,399 --> 00:04:47,399 Tendrá un array de asignaturas, por ejemplo. 60 00:04:47,399 --> 00:04:49,399 Esa es una parte distinta. 61 00:04:49,399 --> 00:04:55,399 Pues la idea de la herencia es que yo pueda crear una clase inicial, digamos así. 62 00:04:55,399 --> 00:04:57,399 Una clase que se define como superclase. 63 00:04:57,400 --> 00:05:01,400 O una clase padre, en un cierto sentido. 64 00:05:01,400 --> 00:05:05,400 Donde defino, por ejemplo, persona. 65 00:05:05,400 --> 00:05:12,400 Y digo que persona tiene nombre, tiene edad y tiene una idea. 66 00:05:12,400 --> 00:05:16,400 Porque todas las personas tienen nombre, edad e idea. 67 00:05:16,400 --> 00:05:22,400 Pero luego, desde esta persona, heredo una clase. 68 00:05:22,400 --> 00:05:25,400 Creo una clase que hereda. 69 00:05:25,400 --> 00:05:26,400 ¿Vale? 70 00:05:27,400 --> 00:05:28,400 Este alumno. 71 00:05:28,400 --> 00:05:29,400 ¿Qué quiere decir? 72 00:05:29,400 --> 00:05:31,400 El alumno es una persona. 73 00:05:31,400 --> 00:05:33,400 Y por lo tanto tiene todo lo que tiene una persona. 74 00:05:33,400 --> 00:05:38,400 Pero estas cosas de aquí. 75 00:05:38,400 --> 00:05:44,400 Y desde persona, yo digo, el profesor hereda también de persona. 76 00:05:44,400 --> 00:05:45,400 El profesor es una persona. 77 00:05:45,400 --> 00:05:48,400 El profesor tiene todo lo que tiene una persona. 78 00:05:48,400 --> 00:05:52,400 Pero además tiene estas otras cosas aquí distintas de alumno. 79 00:05:52,400 --> 00:05:55,400 Entonces estoy creando como una estructura. 80 00:05:55,400 --> 00:06:01,400 En vez de tener que duplicar las cosas parecidas en varias clases. 81 00:06:01,400 --> 00:06:03,400 Las cosas parecidas, las cosas iguales. 82 00:06:03,400 --> 00:06:06,400 Las junto en una clase que será una superclase. 83 00:06:06,400 --> 00:06:11,400 Y a partir de esta superclase, heredo las otras clases más específicas. 84 00:06:11,400 --> 00:06:13,400 Entonces puedo crear la clase vehículo. 85 00:06:13,400 --> 00:06:17,400 Y desde la clase vehículo, que es algo que se mueve en general. 86 00:06:17,400 --> 00:06:19,400 Y tendrá allí dentro velocidad, por ejemplo. 87 00:06:19,400 --> 00:06:21,400 Porque todos los vehículos tendrán una velocidad. 88 00:06:21,400 --> 00:06:24,400 Pero luego desde vehículo puedo tirar coche. 89 00:06:24,400 --> 00:06:29,400 Que además de velocidad tendrá número de puertas. 90 00:06:29,400 --> 00:06:31,400 Y puedo tirar bicicleta. 91 00:06:31,400 --> 00:06:35,400 Que además de velocidad tendrá cambio. 92 00:06:35,400 --> 00:06:38,400 No sé si me explico lo que quiero decir. 93 00:06:38,400 --> 00:06:40,400 ¿Se entiende más o menos? 94 00:06:40,400 --> 00:06:43,400 Esta es la idea de la herencia. 95 00:06:43,400 --> 00:06:48,400 Ahora la vamos a ver un poquito más en detalle, más formal. 96 00:06:48,400 --> 00:06:51,400 Es un mecanismo para la reutilización de software. 97 00:06:51,400 --> 00:06:54,400 Es la idea de facilitar el poder reutilizar. 98 00:06:54,400 --> 00:06:56,400 Software que ya he producido. 99 00:06:56,400 --> 00:06:58,400 Y poderlo aplicar varias veces. 100 00:06:58,400 --> 00:07:00,400 Ya lo tengo. 101 00:07:00,400 --> 00:07:02,400 Lo puedo o reutilizar exactamente igual. 102 00:07:02,400 --> 00:07:04,400 Entonces importo esa clase. 103 00:07:04,400 --> 00:07:08,400 O si digo, mira, ya tengo una clase ya hecha por otro proyecto. 104 00:07:08,400 --> 00:07:10,400 Pero además de lo que está allí. 105 00:07:10,400 --> 00:07:12,400 Me faltaría añadir algunas cosas. 106 00:07:12,400 --> 00:07:14,400 Pues entonces pillo esa clase. 107 00:07:14,400 --> 00:07:16,400 La heredo. 108 00:07:16,400 --> 00:07:18,400 Y añado lo que yo quiera. 109 00:07:18,400 --> 00:07:21,400 Permite definir a partir de una clase, otras clases. 110 00:07:21,400 --> 00:07:23,400 Que reutilicen todo o parte de los atributos. 111 00:07:23,400 --> 00:07:25,400 O métodos de la clase de la que heredan. 112 00:07:25,400 --> 00:07:26,400 ¿Vale? 113 00:07:26,400 --> 00:07:28,400 El ejemplo es persona. 114 00:07:28,400 --> 00:07:31,400 La persona tiene un nombre y una edad. 115 00:07:31,400 --> 00:07:32,400 ¿Vale? 116 00:07:32,400 --> 00:07:34,400 Y a partir de persona. 117 00:07:34,400 --> 00:07:35,400 Yo puedo sacar. 118 00:07:35,400 --> 00:07:37,400 Puedo heredar profesor. 119 00:07:37,400 --> 00:07:39,400 Que tiene todo lo que tiene una persona. 120 00:07:39,400 --> 00:07:41,400 O sea, nombre y edad. 121 00:07:41,400 --> 00:07:44,400 Pero también tiene las asignaturas impartidas. 122 00:07:44,400 --> 00:07:48,400 Y también de persona puedo heredar estudiante. 123 00:07:48,400 --> 00:07:50,400 Que tiene todo lo que tiene una persona. 124 00:07:50,400 --> 00:07:51,400 O sea que esta clase de aquí. 125 00:07:51,400 --> 00:07:53,400 Es como si tuviera también nombre y edad. 126 00:07:53,400 --> 00:07:55,400 Escrito aquí como atributos. 127 00:07:55,400 --> 00:07:57,400 Y además tiene un array de enteros. 128 00:07:57,400 --> 00:07:59,400 Que son normas. 129 00:07:59,400 --> 00:08:01,400 ¿Sí? 130 00:08:01,400 --> 00:08:03,400 En estos. 131 00:08:03,400 --> 00:08:05,400 Te estás guiando siempre por los atributos. 132 00:08:05,400 --> 00:08:07,400 Pero puedes hacer. 133 00:08:07,400 --> 00:08:09,400 Métodos. 134 00:08:09,400 --> 00:08:11,400 Se hereda todo. 135 00:08:11,400 --> 00:08:13,400 Esto es para simplificar. 136 00:08:13,400 --> 00:08:15,400 Pero si persona tiene el método saludar. 137 00:08:15,400 --> 00:08:17,400 Que te dice. Hola me llamo. 138 00:08:17,400 --> 00:08:19,400 Y su nombre. 139 00:08:19,400 --> 00:08:21,400 Ese método saludar también está en profesor. 140 00:08:21,400 --> 00:08:23,400 Ese método saludar también está en estudiante. 141 00:08:23,400 --> 00:08:24,400 ¿Qué hará? 142 00:08:24,400 --> 00:08:25,400 Pillo mi nombre y lo uso. 143 00:08:25,400 --> 00:08:27,400 Como es que hay objetos. 144 00:08:27,400 --> 00:08:28,400 Que cada uno tiene sus atributos. 145 00:08:28,400 --> 00:08:29,400 Es totalmente distinto. 146 00:08:29,400 --> 00:08:30,400 Pero en los métodos. 147 00:08:30,400 --> 00:08:33,400 Luego hacen cosas bastante parecidas. 148 00:08:33,400 --> 00:08:35,400 Ahí haría falta. 149 00:08:35,400 --> 00:08:38,400 No lo sé. 150 00:08:38,400 --> 00:08:40,400 Habría que ver el caso específico. 151 00:08:40,400 --> 00:08:42,400 Concreto que me estás contando. 152 00:08:42,400 --> 00:08:43,400 ¿Vale? 153 00:08:43,400 --> 00:08:44,400 Si. 154 00:08:44,400 --> 00:08:45,400 Si en los métodos. 155 00:08:45,400 --> 00:08:46,400 Usan la. 156 00:08:46,400 --> 00:08:47,400 O sea. 157 00:08:47,400 --> 00:08:48,400 Si hago aquí un método de profesor. 158 00:08:48,400 --> 00:08:49,400 Que usa. 159 00:08:49,400 --> 00:08:50,400 Asignatura impartidas. 160 00:08:50,399 --> 00:08:51,399 Está claro. 161 00:08:51,399 --> 00:08:52,399 Que esto no puede estar en persona. 162 00:08:52,399 --> 00:08:53,399 Porque no existe esa cosa. 163 00:08:53,399 --> 00:08:54,399 ¿Vale? 164 00:08:54,399 --> 00:08:56,399 Si aquí tengo un método. 165 00:08:56,399 --> 00:08:57,399 Que solo usa. 166 00:08:57,399 --> 00:08:58,399 Nombre edad. 167 00:08:58,399 --> 00:09:00,399 Posiblemente no debería estar en profesor. 168 00:09:00,399 --> 00:09:02,399 Si no debería estar en persona. 169 00:09:02,399 --> 00:09:03,399 Ahora. 170 00:09:03,399 --> 00:09:05,399 Puede haber un método específico. 171 00:09:05,399 --> 00:09:07,399 De salud a profesor. 172 00:09:07,399 --> 00:09:08,399 Que dice. 173 00:09:08,399 --> 00:09:09,399 Hola soy el profesor. 174 00:09:09,399 --> 00:09:10,399 Y su nombre. 175 00:09:10,399 --> 00:09:12,399 Entonces eso debería estar en profesor. 176 00:09:12,399 --> 00:09:13,399 Y no en persona. 177 00:09:13,399 --> 00:09:14,399 Porque un estudiante no puede decir. 178 00:09:14,399 --> 00:09:16,399 Hola soy profesor. 179 00:09:16,399 --> 00:09:17,399 Porque no es un profesor. 180 00:09:17,399 --> 00:09:18,399 Entonces. 181 00:09:18,399 --> 00:09:19,399 Y ya veremos. 182 00:09:19,399 --> 00:09:20,399 Lo que se llama. 183 00:09:20,399 --> 00:09:21,399 La prescriptura. 184 00:09:21,399 --> 00:09:22,399 De métodos. 185 00:09:22,399 --> 00:09:23,399 Todavía pronto. 186 00:09:23,399 --> 00:09:24,399 Si. 187 00:09:24,399 --> 00:09:25,399 No es una referencia. 188 00:09:25,399 --> 00:09:26,399 Es una herencia. 189 00:09:26,399 --> 00:09:27,399 ¿Vale? 190 00:09:27,399 --> 00:09:28,399 No es que yo creo. 191 00:09:28,399 --> 00:09:29,399 Un objeto persona. 192 00:09:29,399 --> 00:09:30,399 Por un lado. 193 00:09:30,399 --> 00:09:31,399 Y luego un objeto profesor. 194 00:09:31,399 --> 00:09:32,399 El objeto es profesor. 195 00:09:32,399 --> 00:09:33,399 ¿Vale? 196 00:09:33,399 --> 00:09:34,399 Pero. 197 00:09:34,399 --> 00:09:35,399 Tú estás utilizando. 198 00:09:35,399 --> 00:09:36,399 Este nombre. 199 00:09:36,399 --> 00:09:37,399 Si. 200 00:09:37,399 --> 00:09:38,399 De arriba. 201 00:09:38,399 --> 00:09:39,399 Si. 202 00:09:39,399 --> 00:09:40,399 De arriba. 203 00:09:40,399 --> 00:09:41,399 De arriba. 204 00:09:41,399 --> 00:09:42,399 De arriba. 205 00:09:42,399 --> 00:09:43,399 De arriba. 206 00:09:43,399 --> 00:09:44,399 De arriba. 207 00:09:44,399 --> 00:09:45,399 De arriba. 208 00:09:45,399 --> 00:09:46,399 De arriba. 209 00:09:46,399 --> 00:09:47,399 De arriba. 210 00:09:47,399 --> 00:09:48,399 De arriba. 211 00:09:48,399 --> 00:09:49,399 De arriba. 212 00:09:49,399 --> 00:09:50,399 De arriba. 213 00:09:50,399 --> 00:09:51,399 Sí. 214 00:09:51,399 --> 00:09:52,399 Pero. 215 00:09:52,399 --> 00:09:53,399 Tú estás cambiando. 216 00:09:53,399 --> 00:09:54,399 Pero esto no son tres objetos. 217 00:09:54,399 --> 00:09:55,399 Hazlo distinto. 218 00:09:55,399 --> 00:09:57,399 Esta es una estructura de clases. 219 00:09:57,399 --> 00:09:59,399 Cuando yo creo un objeto. 220 00:09:59,399 --> 00:10:00,399 Creo. 221 00:10:00,399 --> 00:10:01,399 O una instancia de profesor. 222 00:10:01,399 --> 00:10:02,399 O una instancia de estudiante. 223 00:10:02,399 --> 00:10:03,399 O una instancia de persona. 224 00:10:03,399 --> 00:10:04,399 Si creo una instancia de persona. 225 00:10:04,399 --> 00:10:05,399 Tendrá sólo estos dos. 226 00:10:05,399 --> 00:10:06,399 Si creo una instancia de profesor. 227 00:10:06,399 --> 00:10:07,399 Tendrá estos dos. 228 00:10:07,399 --> 00:10:08,399 Y esto. 229 00:10:08,399 --> 00:10:09,399 Entonces puedo usar los tres. 230 00:10:09,399 --> 00:10:10,399 Entonces tengo una forma de modificar desde el profesor. 231 00:10:10,399 --> 00:10:11,399 Persona. 232 00:10:11,399 --> 00:10:12,399 Es que no. 233 00:10:12,399 --> 00:10:13,399 No. 234 00:10:13,399 --> 00:10:14,399 Esto. 235 00:10:14,399 --> 00:10:15,399 No. 236 00:10:15,399 --> 00:10:16,399 No es. 237 00:10:16,399 --> 00:10:17,399 No es. 238 00:10:17,399 --> 00:10:18,399 Es que no. 239 00:10:18,399 --> 00:10:21,699 No lo pillan 240 00:10:21,699 --> 00:10:23,699 No son objetos, son clases 241 00:10:23,699 --> 00:10:25,340 Entonces, ¿qué quiere decir modificar? 242 00:10:25,980 --> 00:10:27,720 Si yo creo un objeto profesor 243 00:10:27,720 --> 00:10:29,199 ¿Puedo cambiar mi nombre? Sí 244 00:10:29,199 --> 00:10:32,120 Porque profesor es una persona 245 00:10:32,120 --> 00:10:32,740 Y tiene nombre 246 00:10:32,740 --> 00:10:35,500 ¿Puedo cambiar el nombre de persona? 247 00:10:35,899 --> 00:10:37,779 ¿Qué quiere decir? Yo soy una persona 248 00:10:37,779 --> 00:10:40,779 ¿Puedo cambiar nombre? Sí 249 00:10:40,779 --> 00:10:43,379 ¿Puedo hacer que 250 00:10:43,379 --> 00:10:45,220 Un profesor 251 00:10:45,220 --> 00:10:48,360 Entre en un método 252 00:10:48,360 --> 00:10:50,379 Donde se pide un objeto persona? 253 00:10:51,399 --> 00:10:51,580 Sí 254 00:10:51,580 --> 00:10:54,160 ¿Puedo hacer que una persona 255 00:10:54,160 --> 00:10:56,139 Entre en un método donde se pide 256 00:10:56,139 --> 00:10:57,840 Un objeto profesor? No 257 00:10:57,840 --> 00:11:00,320 Porque el profesor 258 00:11:00,320 --> 00:11:01,540 Es una persona 259 00:11:01,540 --> 00:11:03,980 Una persona no es un profesor 260 00:11:03,980 --> 00:11:05,560 ¿Sí? 261 00:11:06,139 --> 00:11:06,560 ¿Se entiende? 262 00:11:10,180 --> 00:11:12,540 ¿Cuándo se usan las herencias? 263 00:11:12,740 --> 00:11:14,220 ¿Para qué sirve la herencia? 264 00:11:14,360 --> 00:11:14,860 ¿Cuándo? 265 00:11:15,220 --> 00:11:16,019 Es útil, ¿vale? 266 00:11:16,019 --> 00:11:16,800 Hay dos 267 00:11:16,800 --> 00:11:19,500 Supuestos, ¿vale? 268 00:11:20,360 --> 00:11:22,120 Especialización y generalización 269 00:11:22,120 --> 00:11:23,960 Que es la misma cosa vista 270 00:11:23,960 --> 00:11:25,680 Desde dos perspectivas, ¿vale? 271 00:11:26,220 --> 00:11:27,600 La especialización es 272 00:11:27,600 --> 00:11:29,500 Tengo la clase coche 273 00:11:29,500 --> 00:11:32,440 Como especialización de vehículo 274 00:11:32,440 --> 00:11:34,019 Es decir, tengo una clase general 275 00:11:34,560 --> 00:11:35,920 Una clase 276 00:11:35,920 --> 00:11:37,980 Que me viene bien 277 00:11:37,980 --> 00:11:40,000 Porque yo estoy haciendo un proyecto 278 00:11:40,000 --> 00:11:41,639 Y ya existe una clase 279 00:11:41,639 --> 00:11:44,480 Más general de lo que estoy modelizando yo 280 00:11:44,480 --> 00:11:45,200 Que tiene 281 00:11:45,200 --> 00:11:48,320 Parte de lo que yo quiero modelizar 282 00:11:48,320 --> 00:11:49,340 Me falta algo 283 00:11:49,340 --> 00:11:51,180 Pero todo lo que está aquí me vale 284 00:11:51,180 --> 00:11:52,900 Entonces lo que yo hago es 285 00:11:52,900 --> 00:11:53,920 Pillo esta clase 286 00:11:53,920 --> 00:11:56,680 Heredo desde esta clase una clase nueva 287 00:11:56,680 --> 00:11:59,120 Y añado solo las cosas extra 288 00:11:59,120 --> 00:12:00,460 Las cosas que me faltaban 289 00:12:00,460 --> 00:12:02,400 En esta nueva clase 290 00:12:02,400 --> 00:12:05,060 Entonces tengo la clase vehículo 291 00:12:05,060 --> 00:12:05,960 Que ya existe 292 00:12:05,960 --> 00:12:08,440 Digo, pero yo quiero hacer un programa 293 00:12:08,440 --> 00:12:09,720 Sobre coches 294 00:12:09,720 --> 00:12:11,379 Pues me pillo vehículo 295 00:12:11,379 --> 00:12:13,480 Que ya tiene todas las características de un vehículo 296 00:12:13,480 --> 00:12:14,700 Y todas las cosas importantes de un vehículo 297 00:12:14,700 --> 00:12:15,800 Y los métodos de un vehículo 298 00:12:15,800 --> 00:12:18,280 Y lo especializo en un coche 299 00:12:18,280 --> 00:12:19,560 ¿Sí? 300 00:12:19,700 --> 00:12:21,940 Entonces, un coche es un vehículo 301 00:12:21,940 --> 00:12:24,060 Hace todo lo que puede hacer un vehículo 302 00:12:24,060 --> 00:12:25,640 Tiene todas las características de un vehículo 303 00:12:25,640 --> 00:12:27,620 Más la que yo añado 304 00:12:27,620 --> 00:12:29,240 ¿Sí? 305 00:12:30,180 --> 00:12:32,220 Entonces, tenemos que desarrollar una nueva clase 306 00:12:32,220 --> 00:12:34,360 Que se parece mucho a una que tenemos 307 00:12:34,360 --> 00:12:36,660 Pero necesita información adicional 308 00:12:36,660 --> 00:12:38,080 Tengo ya vehículo 309 00:12:38,080 --> 00:12:40,940 Pero vehículo no tiene el número de puertas 310 00:12:40,940 --> 00:12:41,640 Que tiene 311 00:12:41,640 --> 00:12:44,180 Y yo en mi coche quiero saber cuántas puertas tiene 312 00:12:44,180 --> 00:12:44,680 Por lo tanto, yo tengo que desarrollar una nueva clase 313 00:12:44,700 --> 00:12:45,700 Por lo tanto, pillo vehículo 314 00:12:45,700 --> 00:12:47,000 Lo heredo 315 00:12:47,000 --> 00:12:47,960 Creo coche 316 00:12:47,960 --> 00:12:48,900 Que hereda de vehículo 317 00:12:48,900 --> 00:12:51,120 Y a ese punto le añado a coche 318 00:12:51,120 --> 00:12:52,080 Número de puertas 319 00:12:52,080 --> 00:12:53,460 ¿Sí? 320 00:12:54,620 --> 00:12:58,160 La solución es crear una clase derivada 321 00:12:58,160 --> 00:12:59,020 O clase hija 322 00:12:59,020 --> 00:12:59,879 O subclase 323 00:12:59,879 --> 00:13:01,180 Estos son todos sinónimos 324 00:13:01,180 --> 00:13:01,580 ¿Vale? 325 00:13:02,620 --> 00:13:04,700 Que le añadimos la nueva funcionalidad 326 00:13:05,240 --> 00:13:06,840 O los nuevos valores 327 00:13:06,840 --> 00:13:07,700 O cosas por el estilo 328 00:13:07,700 --> 00:13:10,940 Y evito de reescribir todo el código de vehículo 329 00:13:10,940 --> 00:13:12,340 El código de vehículo ya lo tengo 330 00:13:12,340 --> 00:13:14,240 Añado solo lo extra 331 00:13:14,700 --> 00:13:14,879 ¿Sí? 332 00:13:15,120 --> 00:13:16,440 Esto es especializar 333 00:13:16,440 --> 00:13:17,780 Vehículo es general 334 00:13:17,780 --> 00:13:19,759 Lo especializo en algo 335 00:13:19,759 --> 00:13:22,860 Y mañana hago un proyecto sobre bicicletas 336 00:13:22,860 --> 00:13:24,200 Pues también pillo vehículo 337 00:13:24,200 --> 00:13:26,000 Y especializo una nueva clase 338 00:13:26,000 --> 00:13:26,960 Que es bicicleta 339 00:13:26,960 --> 00:13:28,420 Que tendrá lo propio de 340 00:13:28,420 --> 00:13:29,900 Que tiene una bicicleta 341 00:13:29,900 --> 00:13:31,640 Que no todos los vehículos tienen 342 00:13:31,640 --> 00:13:33,320 ¿Se entiende? 343 00:13:40,320 --> 00:13:41,780 No necesariamente 344 00:13:41,780 --> 00:13:44,420 Porque tú vas heredando 345 00:13:44,420 --> 00:13:45,140 Cuanto quieras 346 00:13:45,140 --> 00:13:46,640 Ve y cosa 347 00:13:46,640 --> 00:13:49,520 Y la cosa tiene un identificador 348 00:13:49,520 --> 00:13:50,180 Y nada más 349 00:13:50,180 --> 00:13:50,780 ¿Vale? 350 00:13:51,020 --> 00:13:52,840 Dentro de cosa metes vehículo 351 00:13:52,840 --> 00:13:54,120 Que también tiene 352 00:13:54,120 --> 00:13:55,420 Además del identificador 353 00:13:55,420 --> 00:13:56,140 Una velocidad 354 00:13:56,140 --> 00:13:58,020 Dentro vehículo pones coche 355 00:13:58,020 --> 00:13:58,660 ¿Vale? 356 00:13:58,900 --> 00:14:01,780 Que dentro además de lo que tiene anterior 357 00:14:01,780 --> 00:14:04,420 Pues tiene también una cosa más 358 00:14:04,420 --> 00:14:05,500 Que es el número de puertas 359 00:14:05,500 --> 00:14:05,980 ¿Vale? 360 00:14:06,160 --> 00:14:07,400 Y luego desde coche 361 00:14:07,400 --> 00:14:08,420 Puedes decir 362 00:14:08,420 --> 00:14:09,660 No sé 363 00:14:09,660 --> 00:14:11,720 Especialización más de coche 364 00:14:11,720 --> 00:14:13,620 Todo terreno 365 00:14:13,620 --> 00:14:14,400 Que tiene un identificador 366 00:14:14,420 --> 00:14:15,300 Y tiene también 367 00:14:15,300 --> 00:14:17,960 La posibilidad de si están 368 00:14:17,960 --> 00:14:20,560 Activadas las cuatro ruedas 369 00:14:20,560 --> 00:14:21,420 Sí o no 370 00:14:22,120 --> 00:14:23,520 Y todo terreno pues 371 00:14:23,520 --> 00:14:24,860 Me explico 372 00:14:24,860 --> 00:14:26,420 Y puedes ir especializando 373 00:14:27,000 --> 00:14:28,220 Cuanto te da la gana 374 00:14:28,220 --> 00:14:28,960 Sí, claro 375 00:14:28,960 --> 00:14:30,440 Si vas heredando por ejemplo 376 00:14:30,440 --> 00:14:31,000 También 377 00:14:31,000 --> 00:14:32,160 Habías dicho 378 00:14:32,160 --> 00:14:33,320 Además de atributos 379 00:14:33,320 --> 00:14:35,240 Pues heredas también los métodos 380 00:14:35,240 --> 00:14:36,260 Lo vas heredando 381 00:14:36,260 --> 00:14:37,200 Con los métodos 382 00:14:37,200 --> 00:14:38,600 Entonces ya tienes que tener más 383 00:14:38,600 --> 00:14:39,980 Porque cuando tú heredas 384 00:14:39,980 --> 00:14:41,420 Tienes una relación 385 00:14:41,940 --> 00:14:43,560 Con la clase 386 00:14:43,560 --> 00:14:44,400 La superclase 387 00:14:44,420 --> 00:14:46,900 De yo soy una superclase 388 00:14:46,900 --> 00:14:48,460 Si yo soy alumno 389 00:14:48,460 --> 00:14:49,680 Y heredo de persona 390 00:14:49,680 --> 00:14:51,040 Yo soy una persona 391 00:14:51,040 --> 00:14:52,800 Hago todo lo que puede hacer una persona 392 00:14:52,800 --> 00:14:54,440 Un alumno es una persona 393 00:14:54,440 --> 00:14:56,120 Contrariamente a cuando pensamos 394 00:14:56,120 --> 00:14:57,300 El 395 00:14:57,300 --> 00:14:57,920 Veis esto 396 00:14:57,920 --> 00:14:59,060 Lo metéis en Youtube 397 00:14:59,060 --> 00:15:03,100 Un alumno puede hacer cualquier cosa 398 00:15:03,100 --> 00:15:03,780 Que hace una persona 399 00:15:03,780 --> 00:15:04,780 Que es una persona 400 00:15:04,780 --> 00:15:05,560 ¿Sí? 401 00:15:05,800 --> 00:15:07,500 Ahora una persona no puede hacer 402 00:15:07,500 --> 00:15:09,780 Todo lo que hace un alumno 403 00:15:09,780 --> 00:15:10,380 ¿Sí? 404 00:15:10,800 --> 00:15:11,980 No puedo decir a una persona 405 00:15:11,980 --> 00:15:12,900 ¿Cuáles son tus notas? 406 00:15:13,320 --> 00:15:14,120 Que si tú no eres un alumno 407 00:15:14,120 --> 00:15:15,659 Las notas no las tienes 408 00:15:15,659 --> 00:15:16,779 ¿Sí? 409 00:15:17,120 --> 00:15:17,580 Y ahora 410 00:15:17,580 --> 00:15:18,679 De alumno 411 00:15:18,679 --> 00:15:20,740 Podría especializar todavía más 412 00:15:20,740 --> 00:15:23,159 Y poner alumno de primero 413 00:15:23,159 --> 00:15:24,659 O alumno de segundo 414 00:15:24,659 --> 00:15:25,139 Es ello 415 00:15:25,139 --> 00:15:26,919 Si quisiera buscar 416 00:15:26,919 --> 00:15:28,799 Diferencias entre estas cosas 417 00:15:28,799 --> 00:15:30,240 ¿Sí? 418 00:15:30,580 --> 00:15:31,720 Y puedo heredar 419 00:15:31,720 --> 00:15:32,620 Cuántas veces me da la gana 420 00:15:32,620 --> 00:15:33,360 Está claro que 421 00:15:33,360 --> 00:15:34,560 Cuanto más subo 422 00:15:34,560 --> 00:15:36,179 En niveles de herencia 423 00:15:36,179 --> 00:15:37,360 Más voy 424 00:15:37,360 --> 00:15:38,539 Hacia el general 425 00:15:38,539 --> 00:15:39,399 ¿Sí? 426 00:15:39,440 --> 00:15:40,560 No puedo especializar 427 00:15:40,560 --> 00:15:42,039 La especialización es hacia abajo 428 00:15:42,039 --> 00:15:42,659 No hacia arriba 429 00:15:42,659 --> 00:15:43,379 ¿Sí? 430 00:15:43,500 --> 00:15:43,639 ¿Sí? 431 00:15:43,639 --> 00:15:43,720 ¿Sí? 432 00:15:44,120 --> 00:15:44,460 Pero 433 00:15:44,460 --> 00:15:45,560 Nadie me prohíbe 434 00:15:45,560 --> 00:15:45,759 O sea 435 00:15:45,759 --> 00:15:47,600 No es que cuando hago una clase 436 00:15:47,600 --> 00:15:49,220 Que luego heredaré 437 00:15:49,220 --> 00:15:50,720 Tiene que ser súper general 438 00:15:50,720 --> 00:15:52,159 Es que siempre que hago 439 00:15:52,159 --> 00:15:53,000 Coche 440 00:15:53,000 --> 00:15:54,120 Tengo que empezar de vehículo 441 00:15:54,120 --> 00:15:54,899 ¿Vale? 442 00:15:55,080 --> 00:15:56,340 Podría ser que 443 00:15:56,340 --> 00:15:58,899 Mi programa va de quesos 444 00:15:58,899 --> 00:16:00,519 Y no es que tengo que empezar de 445 00:16:00,519 --> 00:16:01,980 Comida 446 00:16:01,980 --> 00:16:03,799 Que hereda quesos 447 00:16:03,799 --> 00:16:05,080 Que hereda lácteos 448 00:16:05,080 --> 00:16:05,940 Que hereda quesos 449 00:16:05,940 --> 00:16:06,139 No 450 00:16:06,139 --> 00:16:06,879 Empezó de queso 451 00:16:06,879 --> 00:16:07,799 Y luego de allí 452 00:16:07,799 --> 00:16:09,360 Heredaré lo que tengo que heredar 453 00:16:09,360 --> 00:16:09,860 ¿Sí? 454 00:16:10,340 --> 00:16:11,639 El nivel de abstracción 455 00:16:11,639 --> 00:16:12,240 Lo decido yo 456 00:16:12,240 --> 00:16:13,100 En base al sistema 457 00:16:13,100 --> 00:16:13,560 Que estoy haciendo 458 00:16:13,560 --> 00:16:13,639 ¿Sí? 459 00:16:14,120 --> 00:16:14,759 ¿Sí? 460 00:16:15,659 --> 00:16:16,299 Vale 461 00:16:16,299 --> 00:16:19,639 La otra opción 462 00:16:19,639 --> 00:16:20,820 Es lo mismo 463 00:16:20,820 --> 00:16:22,820 Pero visto al revés 464 00:16:22,820 --> 00:16:23,080 ¿Vale? 465 00:16:23,259 --> 00:16:23,480 O sea 466 00:16:23,480 --> 00:16:24,320 Aquí yo tenía 467 00:16:24,320 --> 00:16:26,039 Algo que ya existía 468 00:16:26,039 --> 00:16:28,159 Pero me faltaba algo más 469 00:16:28,159 --> 00:16:29,299 Tengo vehículo 470 00:16:29,299 --> 00:16:30,820 Pero vehículo no tiene 471 00:16:30,820 --> 00:16:31,659 Lo que tiene un coche 472 00:16:31,659 --> 00:16:32,879 Pues entonces me quedo con el coche 473 00:16:32,879 --> 00:16:34,100 Importo todo 474 00:16:34,100 --> 00:16:35,700 Heredo todo lo que está 475 00:16:35,700 --> 00:16:36,519 En un 476 00:16:36,519 --> 00:16:38,659 En un vehículo 477 00:16:38,659 --> 00:16:39,919 Y luego le añado 478 00:16:39,919 --> 00:16:41,100 Los específicos 479 00:16:41,100 --> 00:16:41,720 Concretos 480 00:16:41,720 --> 00:16:42,299 Que me servían 481 00:16:42,299 --> 00:16:44,100 Cosas al revés 482 00:16:44,100 --> 00:16:45,740 Yo tengo 483 00:16:45,740 --> 00:16:47,440 Sería la clase vehículo 484 00:16:47,440 --> 00:16:48,659 Como generalización de coche 485 00:16:48,659 --> 00:16:49,019 ¿Vale? 486 00:16:49,480 --> 00:16:50,460 Tengo un conjunto 487 00:16:50,460 --> 00:16:51,540 Numeroso de clases 488 00:16:51,540 --> 00:16:52,800 Tengo varias clases 489 00:16:52,800 --> 00:16:54,379 Donde si las miro 490 00:16:54,379 --> 00:16:55,980 Se hace lo mismo 491 00:16:55,980 --> 00:16:57,440 En todas estas clases 492 00:16:57,440 --> 00:16:58,200 ¿Vale? 493 00:16:58,240 --> 00:16:59,040 Imaginamos al revés 494 00:16:59,040 --> 00:16:59,899 No tengo persona 495 00:16:59,899 --> 00:17:01,340 Tengo alumno 496 00:17:01,340 --> 00:17:02,560 Que tiene nombre 497 00:17:02,560 --> 00:17:03,759 Y edad 498 00:17:03,759 --> 00:17:05,079 Luego tengo profesor 499 00:17:05,079 --> 00:17:05,940 Que tiene nombre 500 00:17:05,940 --> 00:17:06,440 Y edad 501 00:17:06,440 --> 00:17:07,400 Luego tengo 502 00:17:07,400 --> 00:17:08,019 Que se yo 503 00:17:08,019 --> 00:17:08,700 Conserje 504 00:17:08,700 --> 00:17:09,460 Que tiene nombre 505 00:17:09,460 --> 00:17:10,039 Y edad 506 00:17:10,039 --> 00:17:11,079 Luego tengo 507 00:17:11,079 --> 00:17:12,779 Padre 508 00:17:12,779 --> 00:17:12,980 ¿No? 509 00:17:13,019 --> 00:17:13,620 En sentido de 510 00:17:13,620 --> 00:17:14,079 Los profesores 511 00:17:14,099 --> 00:17:14,399 Padres 512 00:17:14,399 --> 00:17:15,000 Padre, madre 513 00:17:15,000 --> 00:17:15,500 O lo que sea 514 00:17:15,500 --> 00:17:17,799 Que tiene nombre 515 00:17:17,799 --> 00:17:18,500 Edad 516 00:17:18,500 --> 00:17:19,299 Entonces en cierto momento 517 00:17:19,299 --> 00:17:19,539 Digo 518 00:17:19,539 --> 00:17:20,719 Pero todos estos 519 00:17:20,719 --> 00:17:21,699 Tienen lo mismo 520 00:17:21,699 --> 00:17:23,339 ¿Por qué no hago 521 00:17:23,339 --> 00:17:24,699 No pillo la parte 522 00:17:24,699 --> 00:17:26,179 Igual de todos estos 523 00:17:26,179 --> 00:17:27,879 Me creo una clase 524 00:17:27,879 --> 00:17:28,759 Más general 525 00:17:28,759 --> 00:17:29,719 Persona 526 00:17:29,719 --> 00:17:30,759 Donde pongo 527 00:17:30,759 --> 00:17:31,539 Nombre, edad 528 00:17:31,539 --> 00:17:33,179 Y luego todos estos 529 00:17:33,179 --> 00:17:34,319 Heredan de ella 530 00:17:34,319 --> 00:17:36,039 Con solo sus cosas 531 00:17:36,039 --> 00:17:36,659 Específicas 532 00:17:36,659 --> 00:17:37,679 Es lo mismo 533 00:17:37,679 --> 00:17:39,039 Pero vista al revés 534 00:17:39,039 --> 00:17:40,980 Aquí tengo algo general 535 00:17:40,980 --> 00:17:42,500 Y luego especificando 536 00:17:42,500 --> 00:17:43,899 Y aquí tengo muchas cosas 537 00:17:43,900 --> 00:17:44,640 Específicas 538 00:17:44,640 --> 00:17:46,060 Que se parecen en algo 539 00:17:46,060 --> 00:17:48,060 Saco lo que es común 540 00:17:48,060 --> 00:17:48,759 A todos 541 00:17:48,759 --> 00:17:50,200 Y me creo una nueva clase 542 00:17:50,200 --> 00:17:50,860 Más general 543 00:17:50,860 --> 00:17:52,680 De la que luego herederán 544 00:17:52,680 --> 00:17:58,759 Es muy parecida 545 00:17:58,759 --> 00:18:00,120 No es la misma 546 00:18:00,120 --> 00:18:02,680 Porque son los dos lados 547 00:18:02,680 --> 00:18:04,800 Aquí ya tienes algo general 548 00:18:04,800 --> 00:18:05,980 Y vas especificando 549 00:18:05,980 --> 00:18:08,820 Aquí ya tienes muchos específicos 550 00:18:08,820 --> 00:18:10,160 Y vas generalizando 551 00:18:10,160 --> 00:18:12,340 El herencia 552 00:18:12,340 --> 00:18:13,540 ¿Sí? 553 00:18:13,900 --> 00:18:15,360 Son los dos supuestos 554 00:18:15,360 --> 00:18:16,460 En lo que 555 00:18:16,460 --> 00:18:17,700 Usas herencia 556 00:18:17,700 --> 00:18:18,320 ¿Sí? 557 00:18:18,440 --> 00:18:19,259 Porque a lo mejor 558 00:18:19,259 --> 00:18:20,440 Aquí 559 00:18:20,440 --> 00:18:21,960 Tú no te has dado cuenta 560 00:18:21,960 --> 00:18:23,220 Tú has empezado un sistema 561 00:18:23,220 --> 00:18:24,740 Y has puesto alumnos 562 00:18:24,740 --> 00:18:25,820 Estás haciendo un sistema 563 00:18:25,820 --> 00:18:26,660 De gestión de alumnos 564 00:18:26,660 --> 00:18:27,600 Vale, pongo alumnos 565 00:18:27,600 --> 00:18:29,259 Esto funciona tres años 566 00:18:29,259 --> 00:18:29,900 De repente dices 567 00:18:29,900 --> 00:18:30,259 Ay mira 568 00:18:30,259 --> 00:18:31,240 En este sistema 569 00:18:31,240 --> 00:18:32,060 ¿Por qué no ponemos también 570 00:18:32,060 --> 00:18:32,860 Los profesores? 571 00:18:33,120 --> 00:18:34,360 Que sería útil para mantener 572 00:18:34,360 --> 00:18:35,519 Pongamos los profesores 573 00:18:35,519 --> 00:18:36,320 Y te creas otra 574 00:18:36,320 --> 00:18:38,040 Otra clase completamente distinta 575 00:18:38,040 --> 00:18:38,519 Y luego 576 00:18:38,519 --> 00:18:39,600 Y llega un momento 577 00:18:39,600 --> 00:18:40,600 Que ves que tienes 578 00:18:40,600 --> 00:18:41,560 Ostras, todas estas clases 579 00:18:41,560 --> 00:18:41,900 Que dices 580 00:18:41,900 --> 00:18:42,519 Pero esta 581 00:18:42,519 --> 00:18:43,640 Esta parte 582 00:18:43,900 --> 00:18:44,540 De código 583 00:18:44,540 --> 00:18:45,800 Cuando lo tengo que mantener 584 00:18:45,800 --> 00:18:47,000 Cuando lo tengo que modificar 585 00:18:47,000 --> 00:18:48,080 Lo tengo que modificar 586 00:18:48,080 --> 00:18:49,180 En todas estas clases 587 00:18:49,180 --> 00:18:50,019 Porque se repite 588 00:18:50,019 --> 00:18:51,100 Exactamente el mismo código 589 00:18:51,100 --> 00:18:53,019 Pues hago una clase general 590 00:18:53,019 --> 00:18:54,019 Pongo ese código allí 591 00:18:54,019 --> 00:18:54,759 Y ahora 592 00:18:54,759 --> 00:18:55,880 Todos se redan de allí 593 00:18:55,880 --> 00:18:56,640 Y si lo modifico 594 00:18:56,640 --> 00:18:57,340 Lo modifico una vez 595 00:18:57,340 --> 00:18:57,640 Solo 596 00:18:57,640 --> 00:18:58,840 ¿Sí? 597 00:18:59,920 --> 00:19:00,940 Dudas hasta aquí 598 00:19:00,940 --> 00:19:06,519 Entonces 599 00:19:06,519 --> 00:19:10,800 Imaginaos que esto 600 00:19:10,800 --> 00:19:12,240 Sea una situación 601 00:19:12,240 --> 00:19:13,160 Sin herencia 602 00:19:13,160 --> 00:19:13,580 ¿Vale? 603 00:19:13,900 --> 00:19:14,900 En este caso 604 00:19:14,900 --> 00:19:15,900 Vamos a poner 605 00:19:15,900 --> 00:19:16,900 A ver 606 00:19:16,900 --> 00:19:17,900 Ah 607 00:19:17,900 --> 00:19:20,900 Nupam 608 00:19:20,900 --> 00:19:23,900 Vale 609 00:19:23,900 --> 00:19:24,900 Sin herencia 610 00:19:24,900 --> 00:19:25,900 Estoy en esta situación de aquí 611 00:19:25,900 --> 00:19:26,900 Tengo 612 00:19:26,900 --> 00:19:27,900 La clase 613 00:19:27,900 --> 00:19:28,900 Recurso 614 00:19:28,900 --> 00:19:29,900 Un recurso genérico 615 00:19:29,900 --> 00:19:30,900 Que tiene su nombre 616 00:19:30,900 --> 00:19:31,900 Descripción 617 00:19:31,900 --> 00:19:32,900 Que puede decir su nombre 618 00:19:32,900 --> 00:19:33,900 Puede decir su descripción 619 00:19:33,900 --> 00:19:34,900 Esta es como get 620 00:19:34,900 --> 00:19:35,900 ¿Vale? 621 00:19:35,900 --> 00:19:36,900 En cierto sentido 622 00:19:36,900 --> 00:19:37,900 Luego tengo 623 00:19:37,900 --> 00:19:38,900 Como recurso más específico 624 00:19:38,900 --> 00:19:39,900 La aula 625 00:19:39,900 --> 00:19:40,900 ¿Vale? 626 00:19:40,900 --> 00:19:41,900 Que es un recurso 627 00:19:41,900 --> 00:19:42,900 Educativo 628 00:19:42,900 --> 00:19:43,900 ¿Vale? 629 00:19:43,900 --> 00:19:47,800 Que tiene su nombre, su descripción, tiene también la localización de donde está la obra. 630 00:19:48,140 --> 00:19:51,800 Puede decir su nombre, decir su descripción y decir la localización de donde está. 631 00:19:52,200 --> 00:19:52,880 Vale, que no me da. 632 00:19:53,080 --> 00:19:55,940 Y luego tengo el ordenador, que es otro recurso, otro tipo de recurso. 633 00:19:56,220 --> 00:20:00,100 Y veo que tiene nombre, descripción, sistema operativo, decir nombre. 634 00:20:01,060 --> 00:20:05,980 Y de repente me doy cuenta que esta parte de aquí, la parte azul, 635 00:20:06,780 --> 00:20:09,840 efectivamente es la misma en todos los recursos que tengo. 636 00:20:10,620 --> 00:20:12,340 Entonces lo que digo es, vale, muy bien. 637 00:20:12,339 --> 00:20:19,659 Me voy a crear la clase recurso que tenga esta parte de aquí, que es la parte común. 638 00:20:20,559 --> 00:20:25,439 Y luego en aula y ordenador le digo, oye aula, tú heredas de recursos, 639 00:20:25,720 --> 00:20:31,579 entonces estás importando todo esto y dentro de aula solo pongo las cosas nuevas, 640 00:20:31,839 --> 00:20:34,539 las cosas específicas del aula, que no tendrá un ordenador. 641 00:20:35,740 --> 00:20:39,339 Y en la parte de ordenador en vez de sistema operativo, decir sistema operativo. 642 00:20:40,859 --> 00:20:41,299 ¿Sí? 643 00:20:42,339 --> 00:20:43,480 Entonces la idea es un poquito de eso. 644 00:20:43,859 --> 00:20:50,579 Sirve para organizar mejor el código y al mismo tiempo para poder reutilizar parte de código sin grandes problemas. 645 00:20:51,419 --> 00:20:51,539 ¿Sí? 646 00:20:54,099 --> 00:20:55,839 ¿Cómo se hace esto? 647 00:20:57,439 --> 00:20:57,819 Aquí no hay. 648 00:21:00,019 --> 00:21:01,519 Esta es la sintaxis. 649 00:21:02,779 --> 00:21:07,339 Public class aula extends recurso. 650 00:21:08,339 --> 00:21:12,119 Esta parte de extends recurso que se pone después del public. 651 00:21:12,339 --> 00:21:18,399 Public class aula me está diciendo, yo soy una clase que hereda de esta otra clase. 652 00:21:19,619 --> 00:21:19,740 ¿Sí? 653 00:21:20,220 --> 00:21:22,859 Entonces la clase aula hereda de recurso. 654 00:21:23,599 --> 00:21:26,220 La clase recurso es una super clase de aula. 655 00:21:27,099 --> 00:21:29,459 La clase recurso es una clase padre. 656 00:21:30,220 --> 00:21:32,639 La clase aula es una clase hija. 657 00:21:32,819 --> 00:21:32,939 ¿Sí? 658 00:21:33,599 --> 00:21:34,539 O madre, no sé. 659 00:21:36,099 --> 00:21:41,779 ¿En el caso de que la clase de aula hereda de recursos, heredas todo? 660 00:21:42,179 --> 00:21:42,319 ¿O heredas todo? 661 00:21:42,319 --> 00:21:42,339 ¿O heredas todo? 662 00:21:42,339 --> 00:21:44,679 ¿En el caso de que la clase de aula hereda de recursos, heredas todo? 663 00:21:45,159 --> 00:21:45,419 No, no. 664 00:21:45,579 --> 00:21:46,759 Claro, entonces no serviría. 665 00:21:47,159 --> 00:21:49,519 Porque mi localización sería a recursos, ¿no? 666 00:21:50,059 --> 00:21:53,819 Claro, pero es aula que extiende recursos. 667 00:21:54,379 --> 00:21:55,459 No recursos que extiende aula. 668 00:21:58,819 --> 00:22:02,939 Es esto que pilla esto. 669 00:22:03,279 --> 00:22:04,759 No esto que pilla esto. 670 00:22:04,779 --> 00:22:06,659 Por eso solo ha pillado lo que estaba en azul, ¿no? 671 00:22:07,179 --> 00:22:07,539 Sí. 672 00:22:08,459 --> 00:22:10,059 Y de hecho, si te acuerdas cómo era. 673 00:22:12,339 --> 00:22:17,179 La aula tenía que tener todo lo azul, más inicialización y localización. 674 00:22:17,699 --> 00:22:21,899 Ahora, en este caso, lo que estoy haciendo es heredar lo azul desde arriba 675 00:22:21,899 --> 00:22:26,179 y aquí dentro tengo solo las cosas específicas que no tiene un recurso en general. 676 00:22:26,740 --> 00:22:29,019 Todos los recursos tienen estas cuatro cosas, 677 00:22:29,599 --> 00:22:31,679 pero el aula en particular tiene también la localización 678 00:22:31,679 --> 00:22:33,240 y el ordenador tiene el sistema operativo. 679 00:22:34,500 --> 00:22:34,699 ¿Sí? 680 00:22:36,220 --> 00:22:39,740 Los atributos y métodos que aparecen en azul en la clase padre 681 00:22:39,740 --> 00:22:41,659 se repiten en la clase hija. 682 00:22:42,339 --> 00:22:44,639 En vez de no es necesario repetir el código, 683 00:22:44,859 --> 00:22:47,399 basta decir que la clase extiende y ya está. 684 00:22:47,659 --> 00:22:48,619 Por el caso del derecho, ¿vale? 685 00:22:48,779 --> 00:22:52,279 Sería la idea que, imaginaos que de repente viene mi jefe y dice 686 00:22:52,279 --> 00:22:54,740 esto de llamarlo descripción no me gusta, 687 00:22:54,859 --> 00:22:57,899 llámalo visión. 688 00:22:58,639 --> 00:23:00,980 Pues aquí yo tengo que entrar entre clases 689 00:23:00,980 --> 00:23:03,559 y cambiar descripción en visión. 690 00:23:03,919 --> 00:23:05,879 Pues aquí entro en una sola, lo cambio aquí 691 00:23:05,879 --> 00:23:07,859 y en automático se refleja en todas las demás. 692 00:23:08,859 --> 00:23:10,319 ¿Sí? Entonces es más organizado. 693 00:23:10,319 --> 00:23:12,319 Y es más, si ahora sale... 694 00:23:12,339 --> 00:23:15,899 Si ahora sale móvil como nuevo recurso que puedo utilizar, 695 00:23:15,899 --> 00:23:20,299 pues lo único que tengo que hacer es heredar desde recurso 696 00:23:20,299 --> 00:23:22,299 y poner aquí otra cosa. 697 00:23:22,299 --> 00:23:22,799 ¿Vale? 698 00:23:22,799 --> 00:23:27,000 O mejor todavía, si sale móvil que tiene número de teléfono, 699 00:23:27,000 --> 00:23:29,000 heredo desde ordenador. 700 00:23:29,000 --> 00:23:32,000 Porque un móvil tiene un sistema operativo. 701 00:23:34,000 --> 00:23:36,000 ¿Entendéis lo que quiero decir? 702 00:23:36,000 --> 00:23:39,000 Entonces, un ordenador no tiene el número de teléfono, 703 00:23:39,000 --> 00:23:41,899 pero el teléfono sí, es un ordenador con número de teléfono. 704 00:23:41,900 --> 00:23:43,900 Para mí. 705 00:23:43,900 --> 00:23:45,900 Entonces heredaría desde aquí abajo. 706 00:23:45,900 --> 00:23:51,900 Haría public class móvil extends ordenador. 707 00:23:51,900 --> 00:23:53,900 ¿Sí? 708 00:23:53,900 --> 00:23:55,900 ¿Tú das? 709 00:23:55,900 --> 00:23:59,900 Si móvil es de ordenador, 710 00:23:59,900 --> 00:24:01,900 ya está incluido en la herencia de recurso. 711 00:24:01,900 --> 00:24:03,900 Claro. 712 00:24:03,900 --> 00:24:07,900 Porque móvil es un ordenador que es un recurso... 713 00:24:07,900 --> 00:24:09,900 Vale. 714 00:24:09,900 --> 00:24:11,900 ... 715 00:24:11,900 --> 00:24:13,900 Nomenclatura, que ya os lo he dicho varias veces, 716 00:24:13,900 --> 00:24:15,900 cómo se dicen las cosas, ¿vale? 717 00:24:15,900 --> 00:24:19,900 Si yo tengo vehículo, 718 00:24:19,900 --> 00:24:21,900 esta situación, ¿vale? 719 00:24:21,900 --> 00:24:23,900 Tengo un vehículo 720 00:24:23,900 --> 00:24:29,900 que tiene matrícula, modelo y potencia en CV 721 00:24:29,900 --> 00:24:31,900 y tiene métodos getter aquí. 722 00:24:31,900 --> 00:24:35,900 Y luego desde vehículo hereda taxi y autobús 723 00:24:35,900 --> 00:24:37,900 que tienen cosas distintas. 724 00:24:37,900 --> 00:24:39,900 Por ejemplo, el autobús tiene número plazas 725 00:24:39,900 --> 00:24:43,900 y el taxi tiene número, no sé qué es esto, licencia. 726 00:24:43,900 --> 00:24:45,900 ¿Vale? 727 00:24:45,900 --> 00:24:49,900 ¿Cómo hablo de esto? 728 00:24:49,900 --> 00:24:51,900 Pues puedo decir que taxi 729 00:24:51,900 --> 00:24:53,900 hereda las variables y métodos de vehículo. 730 00:24:53,900 --> 00:24:55,900 ¿Sí? 731 00:24:55,900 --> 00:24:57,900 Puedo decir que taxi extiende vehículo 732 00:24:57,900 --> 00:24:59,900 o taxi hereda de vehículo. 733 00:24:59,900 --> 00:25:01,900 ¿Sí? 734 00:25:01,900 --> 00:25:03,900 Que taxi es una subclase de vehículo. 735 00:25:03,900 --> 00:25:05,900 Taxi 736 00:25:05,900 --> 00:25:07,900 es una clase derivada de vehículo. 737 00:25:07,900 --> 00:25:09,900 Taxi 738 00:25:09,900 --> 00:25:11,900 es una clase hija de vehículo. 739 00:25:11,900 --> 00:25:13,900 Todo esto son las distintas, ¿vale? 740 00:25:13,900 --> 00:25:15,900 Se entiende la misma cosa. 741 00:25:15,900 --> 00:25:17,900 Puedo decir que vehículo es superclase de taxi. 742 00:25:17,900 --> 00:25:19,900 Puedo decir que vehículo es clase base. 743 00:25:19,900 --> 00:25:21,900 Yo esto lo he oído muy poco. 744 00:25:21,900 --> 00:25:23,900 De taxi. 745 00:25:23,900 --> 00:25:25,900 Vehículo es una clase padre de taxi. 746 00:25:25,900 --> 00:25:27,900 ¿La clase femenina debe ser madre? 747 00:25:27,900 --> 00:25:29,900 No lo sé, ¿vale? 748 00:25:29,900 --> 00:25:31,900 Esto son cosas informáticas. 749 00:25:31,900 --> 00:25:33,900 Yo no tengo nada que ver con esto, ¿eh? 750 00:25:33,900 --> 00:25:35,900 No lo elijo yo. 751 00:25:35,900 --> 00:25:37,900 La herencia realiza la relación es un. 752 00:25:37,900 --> 00:25:39,900 Esto es importante. 753 00:25:39,900 --> 00:25:41,900 ¿Vale? 754 00:25:41,900 --> 00:25:43,900 El taxi es un vehículo. 755 00:25:43,900 --> 00:25:45,900 El autobús 756 00:25:45,900 --> 00:25:47,900 es un vehículo. 757 00:25:47,900 --> 00:25:49,900 El móvil es un 758 00:25:49,900 --> 00:25:51,900 ordenador que es un 759 00:25:51,900 --> 00:25:53,900 recurso. 760 00:25:53,900 --> 00:25:55,900 ¿Sí? 761 00:25:55,900 --> 00:25:57,900 Todo lo que... 762 00:25:57,900 --> 00:25:59,900 Allá donde yo necesite 763 00:25:59,900 --> 00:26:01,900 un vehículo, 764 00:26:01,900 --> 00:26:03,900 puedo poner un taxi. 765 00:26:03,900 --> 00:26:05,900 ¿Sí? 766 00:26:05,900 --> 00:26:07,900 Si yo tengo el método 767 00:26:07,900 --> 00:26:09,900 mueve y pilla 768 00:26:09,900 --> 00:26:11,900 vehículo, vehículo, 769 00:26:11,900 --> 00:26:13,900 pues ahí dentro puedo poner un taxi. 770 00:26:13,900 --> 00:26:15,900 Porque taxi es un vehículo. 771 00:26:15,900 --> 00:26:17,900 ¿Se entiende? 772 00:26:17,900 --> 00:26:19,900 Vale. 773 00:26:21,900 --> 00:26:23,900 Si te exhalas, entonces 774 00:26:23,900 --> 00:26:25,900 está aquí. Lo hemos visto antes, ¿vale? 775 00:26:25,900 --> 00:26:27,900 Para heredar... 776 00:26:27,900 --> 00:26:29,900 No sé si vendrá después. Ya os lo digo. 777 00:26:29,900 --> 00:26:31,900 En Java 778 00:26:31,900 --> 00:26:33,900 se puede heredar una sola clase. 779 00:26:33,900 --> 00:26:35,900 Yo 780 00:26:35,900 --> 00:26:37,900 heredo de una clase sola. 781 00:26:37,900 --> 00:26:39,900 No puedo heredar de dos clases. 782 00:26:39,900 --> 00:26:41,900 Puedo decir, soy móvil, heredo de 783 00:26:41,900 --> 00:26:43,900 ordenador y de 784 00:26:43,900 --> 00:26:45,900 vehículo. 785 00:26:45,900 --> 00:26:47,900 No lo puedo hacer. 786 00:26:47,900 --> 00:26:49,900 En C++, por ejemplo, sí. 787 00:26:49,900 --> 00:26:51,900 C++ permite 788 00:26:51,900 --> 00:26:53,900 herencia múltiple. 789 00:26:53,900 --> 00:26:55,900 Sin embargo, Java no. 790 00:26:55,900 --> 00:26:57,900 Siempre una sola herencia. 791 00:26:57,900 --> 00:26:59,900 Y se hace así. Los modificadores, 792 00:26:59,900 --> 00:27:01,900 public class, nada class, private class, 793 00:27:01,900 --> 00:27:03,900 lo que sea, 794 00:27:03,900 --> 00:27:05,900 la clase hija, 795 00:27:05,900 --> 00:27:07,900 extend, la superclase 796 00:27:07,900 --> 00:27:09,900 o la clase aparte. 797 00:27:09,900 --> 00:27:11,900 ¿Dudas? 798 00:27:15,900 --> 00:27:17,900 Declaración de clase derivada. 799 00:27:17,900 --> 00:27:19,900 Vamos a ver esta estructura aquí. 800 00:27:19,900 --> 00:27:21,900 Tenemos una persona 801 00:27:21,900 --> 00:27:23,900 como nivel más genérico. 802 00:27:23,900 --> 00:27:25,900 Tenemos empleado y alumno. 803 00:27:25,900 --> 00:27:27,900 Y entre los varios empleados tengo 804 00:27:27,900 --> 00:27:29,900 un profesor. 805 00:27:29,900 --> 00:27:31,900 Aquí podría tener también conserje, que es un empleado. 806 00:27:31,900 --> 00:27:33,900 Un profesor es un empleado, que es una 807 00:27:33,900 --> 00:27:35,900 persona. Un alumno es una persona, pero no es 808 00:27:35,900 --> 00:27:37,900 un empleado. 809 00:27:37,900 --> 00:27:39,900 ¿Sí? Entonces, ¿cómo se declara 810 00:27:39,900 --> 00:27:41,900 public class persona? 811 00:27:41,900 --> 00:27:43,900 Y pondría aquí todo lo que es 812 00:27:43,900 --> 00:27:45,900 propio de una persona. El nombre, la edad 813 00:27:45,900 --> 00:27:47,900 y saludar. 814 00:27:47,900 --> 00:27:49,900 Luego haría public class alumno 815 00:27:49,900 --> 00:27:51,900 extend persona. 816 00:27:51,900 --> 00:27:53,900 Eso quiere decir que no tengo que volver a escribir aquí 817 00:27:53,900 --> 00:27:55,900 nombre, edad 818 00:27:55,900 --> 00:27:57,900 y cosas por el estilo, porque ya las tengo 819 00:27:57,900 --> 00:27:59,900 siendo una persona. Pondría simplemente 820 00:27:59,900 --> 00:28:01,900 la rey de notas. 821 00:28:01,900 --> 00:28:03,900 Public class empleado 822 00:28:03,900 --> 00:28:05,900 extend persona. Aquí también 823 00:28:05,900 --> 00:28:07,900 pondría, por ejemplo, si eres un empleado, 824 00:28:07,900 --> 00:28:09,900 seguramente tendrás un sueldo, pues pondría 825 00:28:09,900 --> 00:28:11,900 cantidad de sueldo. Y luego 826 00:28:11,900 --> 00:28:13,900 tendría public class profesor que extend 827 00:28:13,900 --> 00:28:15,900 empleado, donde pondría 828 00:28:15,900 --> 00:28:17,900 las asignaturas que imparte. 829 00:28:17,900 --> 00:28:19,900 Entonces, 830 00:28:19,900 --> 00:28:21,900 si yo me meto en un profesor, tengo un objeto 831 00:28:21,900 --> 00:28:23,900 profesor, él puede mirar las asignaturas 832 00:28:23,900 --> 00:28:25,900 que imparte, puede mirar 833 00:28:25,900 --> 00:28:27,900 el sueldo que tiene, puede mirar su nombre, 834 00:28:27,900 --> 00:28:29,900 puede mirar su edad. 835 00:28:29,900 --> 00:28:31,900 Tiene todo esto a disposición. 836 00:28:31,900 --> 00:28:33,900 Si yo miro a un empleado, no le puedo 837 00:28:33,900 --> 00:28:35,900 pedir a un empleado qué asignaturas imparte. 838 00:28:35,900 --> 00:28:37,900 Porque empleado no tiene las asignaturas. 839 00:28:37,900 --> 00:28:39,900 Sí. 840 00:28:39,900 --> 00:28:41,900 Sí. 841 00:28:41,900 --> 00:28:43,900 Si yo, por ejemplo, en vez de 842 00:28:43,900 --> 00:28:45,900 estudiar alguna privada, 843 00:28:45,900 --> 00:28:47,900 a la hora de utilizar, por ejemplo, 844 00:28:47,900 --> 00:28:49,900 atributos, por ejemplo, de personas. 845 00:28:49,900 --> 00:28:51,900 Tengo unos atributos... Clases privadas. 846 00:28:51,900 --> 00:28:53,900 Dejamos las clases privadas. 847 00:28:53,900 --> 00:28:55,900 Dejamos las clases privadas. 848 00:28:55,900 --> 00:28:57,900 Dejamos las clases privadas. 849 00:28:57,900 --> 00:28:59,900 Dejamos las clases privadas. 850 00:28:59,900 --> 00:29:01,900 No recuerdo si 851 00:29:01,900 --> 00:29:03,900 la acepta private. Posiblemente sí. 852 00:29:03,900 --> 00:29:05,900 Pero todavía no la hemos usado. 853 00:29:05,900 --> 00:29:07,900 Si fuera privada, solo 854 00:29:07,900 --> 00:29:09,900 la clase privada... 855 00:29:09,900 --> 00:29:11,900 Ahora dudo, ¿eh? 856 00:29:11,900 --> 00:29:13,900 Si se puede hacer una clase privada. 857 00:29:13,900 --> 00:29:15,900 Pero si se pudiera hacer, solo se 858 00:29:15,900 --> 00:29:17,900 utilizaría dentro de la misma 859 00:29:17,900 --> 00:29:19,900 clase. No se puede hacer en la clase privada. 860 00:29:19,900 --> 00:29:21,900 Los modificadores, ahora no me acuerdo. 861 00:29:21,900 --> 00:29:23,900 Luego lo probamos. 862 00:29:23,900 --> 00:29:25,900 Seguramente si no le pones public, 863 00:29:25,900 --> 00:29:27,900 solo puedes utilizarlas en el mismo package. 864 00:29:27,900 --> 00:29:29,900 No puedes acceder desde... 865 00:29:29,900 --> 00:29:31,900 Pero dentro del mismo 866 00:29:31,900 --> 00:29:33,900 package podrías heredarlos de tal la gana. 867 00:29:33,900 --> 00:29:35,900 El problema es si quieres... 868 00:29:35,900 --> 00:29:37,900 Imagínate que persona no sea public. 869 00:29:37,900 --> 00:29:39,900 Para poder heredar de personas 870 00:29:39,900 --> 00:29:41,900 tiene que estar en el mismo package. 871 00:29:41,900 --> 00:29:43,900 Si no, no la puedes ver. 872 00:29:43,900 --> 00:29:45,900 ¿Sí? 873 00:29:47,900 --> 00:29:49,900 Subclase. 874 00:29:53,900 --> 00:29:55,900 Esto es un poquito un esquema 875 00:29:55,900 --> 00:29:57,900 de cómo sería 876 00:29:57,900 --> 00:29:59,900 una clase alumno. 877 00:29:59,900 --> 00:30:01,900 ¿Vale? 878 00:30:01,900 --> 00:30:03,900 Aquí están los atributos, aquí están los métodos. 879 00:30:03,900 --> 00:30:05,900 Una clase alumno. 880 00:30:05,900 --> 00:30:07,900 ¿Vale? 881 00:30:07,900 --> 00:30:09,900 Es como una clase que tiene dentro 882 00:30:09,900 --> 00:30:11,900 una persona 883 00:30:11,900 --> 00:30:13,900 con los atributos 884 00:30:13,900 --> 00:30:15,900 y los métodos 885 00:30:15,900 --> 00:30:17,900 de la persona, 886 00:30:17,900 --> 00:30:19,900 pero además tiene 887 00:30:19,900 --> 00:30:21,900 otras cosas. 888 00:30:21,900 --> 00:30:23,900 ¿Sí? 889 00:30:23,900 --> 00:30:25,900 Entonces esto sería un objeto alumno 890 00:30:25,900 --> 00:30:27,900 y un objeto alumno es como si tuviera dentro 891 00:30:27,900 --> 00:30:29,900 un objeto persona, no son objetos distintos, 892 00:30:29,900 --> 00:30:31,900 es el mismo objeto, pero tiene la estructura 893 00:30:31,900 --> 00:30:33,900 parecida a un objeto persona, 894 00:30:33,900 --> 00:30:35,900 más las cosas extras 895 00:30:35,900 --> 00:30:37,900 de la estructura del alumno. 896 00:30:37,900 --> 00:30:39,900 Es por esa razón que si yo 897 00:30:39,900 --> 00:30:41,900 tuviera un método que dice 898 00:30:41,900 --> 00:30:43,900 añade 899 00:30:43,900 --> 00:30:45,900 a la lista 900 00:30:45,900 --> 00:30:47,900 y pilla como parámetro persona, 901 00:30:47,900 --> 00:30:49,900 yo le puedo pasar 902 00:30:49,900 --> 00:30:51,900 tranquilamente un alumno 903 00:30:51,900 --> 00:30:53,900 porque todo lo que tiene alumno 904 00:30:53,900 --> 00:30:55,900 lo tiene una persona. 905 00:30:55,900 --> 00:30:57,900 Las cosas de una persona 906 00:30:57,900 --> 00:30:59,900 están en alumno. 907 00:30:59,900 --> 00:31:01,900 Al revés no. 908 00:31:01,900 --> 00:31:03,900 Si yo tengo un añade alumno 909 00:31:03,900 --> 00:31:05,900 que pilla un alumno, 910 00:31:05,900 --> 00:31:07,900 no le puedo pasar una persona. 911 00:31:07,900 --> 00:31:09,900 Porque a lo mejor en este método 912 00:31:09,900 --> 00:31:11,900 se hace referencia a un horario 913 00:31:11,900 --> 00:31:13,900 o un grupo que una persona no tiene. 914 00:31:13,900 --> 00:31:15,900 Pero es que los alumnos sí. 915 00:31:15,900 --> 00:31:17,900 Entonces tengo que pasarle al alumno. 916 00:31:17,900 --> 00:31:19,900 O sea que 917 00:31:19,900 --> 00:31:21,900 una clase hija 918 00:31:21,900 --> 00:31:23,900 se puede usar 919 00:31:23,900 --> 00:31:25,900 allá donde se pide una clase padre, 920 00:31:25,900 --> 00:31:27,900 una superclase. 921 00:31:27,900 --> 00:31:29,900 Al revés no. 922 00:31:29,900 --> 00:31:31,900 No puedo usar una clase 923 00:31:31,900 --> 00:31:33,900 hija, una subclase 924 00:31:33,900 --> 00:31:35,900 donde... 925 00:31:35,900 --> 00:31:37,900 Perdón, no puedo utilizar 926 00:31:37,900 --> 00:31:39,900 una superclase 927 00:31:39,900 --> 00:31:41,900 donde se pide una subclase. 928 00:31:45,900 --> 00:31:47,900 ¿Entonces al crear un alumno 929 00:31:47,900 --> 00:31:49,900 estás creando también una persona? 930 00:31:49,900 --> 00:31:51,900 En un cierto sentido sí, 931 00:31:51,900 --> 00:31:53,900 pero no, no son objetos distintos, 932 00:31:53,900 --> 00:31:55,900 son objetos solos. 933 00:31:55,900 --> 00:31:57,900 Pero ahora cuando veremos los constructores 934 00:31:57,900 --> 00:31:59,900 al crear un alumno 935 00:31:59,900 --> 00:32:01,900 tú llamas el constructor de persona 936 00:32:01,900 --> 00:32:03,900 y luego añades cosas. 937 00:32:05,900 --> 00:32:07,900 Claro, 938 00:32:07,900 --> 00:32:09,900 es que cuando 939 00:32:09,900 --> 00:32:11,900 un alumno es una persona 940 00:32:11,900 --> 00:32:13,900 entonces tú harás todo lo que hace una persona normal, 941 00:32:13,900 --> 00:32:15,900 preparas todo para que pueda usar 942 00:32:15,900 --> 00:32:17,900 sus métodos, para que tenga sus variables 943 00:32:17,900 --> 00:32:19,900 y luego a esto le extiendes con 944 00:32:19,900 --> 00:32:21,900 algo más. 945 00:32:21,900 --> 00:32:23,900 Extends con algo más. 946 00:32:23,900 --> 00:32:25,900 ¿Sí? 947 00:32:25,900 --> 00:32:27,900 ¿Dudas? 948 00:32:27,900 --> 00:32:29,900 Vale. 949 00:32:29,900 --> 00:32:31,900 Entonces, esta es 950 00:32:31,900 --> 00:32:33,900 Protected Vida, el ejemplo que me 951 00:32:33,900 --> 00:32:35,900 hacías antes. 952 00:32:35,900 --> 00:32:41,900 Entonces, yo tengo public 953 00:32:41,900 --> 00:32:43,900 class persona, vale, 954 00:32:43,900 --> 00:32:45,900 y aquí creo 955 00:32:45,900 --> 00:32:47,900 un 956 00:32:47,900 --> 00:32:49,900 public persona, 957 00:32:49,900 --> 00:32:51,900 persona, no sé 958 00:32:51,900 --> 00:32:53,900 qué me quiere decir, 959 00:32:53,900 --> 00:32:55,900 posible de la... 960 00:32:55,900 --> 00:32:57,900 Ah, vale, sí, perdón. 961 00:32:57,900 --> 00:32:59,900 No, no era tu ejemplo, es esto. 962 00:32:59,900 --> 00:33:01,900 ¿Os acordáis los modificadores? 963 00:33:01,900 --> 00:33:03,900 Que había cuatro modificadores, 964 00:33:03,900 --> 00:33:05,900 había public, había protect, 965 00:33:05,900 --> 00:33:07,900 había package y había 966 00:33:07,900 --> 00:33:09,900 private. 967 00:33:09,900 --> 00:33:11,900 Y que uno de ellos os he dicho 968 00:33:11,900 --> 00:33:13,900 no podemos entender qué es esto. 969 00:33:13,900 --> 00:33:15,900 ¿Sí? 970 00:33:15,900 --> 00:33:17,900 Pues ahora lo podemos entender. 971 00:33:17,900 --> 00:33:19,900 La diferencia 972 00:33:19,900 --> 00:33:21,900 entre protected y package 973 00:33:21,900 --> 00:33:23,900 como modificadores 974 00:33:23,900 --> 00:33:25,900 de visibilidad, es que en package 975 00:33:25,900 --> 00:33:27,900 lo pueden ver sólo otras 976 00:33:27,900 --> 00:33:29,900 clases del mismo package. 977 00:33:29,900 --> 00:33:31,900 ¿Sí? Entonces, a este 978 00:33:31,900 --> 00:33:33,900 a nombre sólo accede, 979 00:33:33,900 --> 00:33:35,900 pueden acceder directamente 980 00:33:35,900 --> 00:33:37,900 a la variable nombre 981 00:33:37,900 --> 00:33:39,900 objetos que son 982 00:33:39,900 --> 00:33:41,900 instancias de clases que pertenecen 983 00:33:41,900 --> 00:33:43,900 al mismo package de persona. 984 00:33:45,900 --> 00:33:47,900 Sin embargo, si es protected, 985 00:33:47,900 --> 00:33:49,900 además de los que están 986 00:33:49,900 --> 00:33:51,900 en el mismo package, pueden acceder 987 00:33:51,900 --> 00:33:53,900 también cualquier clase 988 00:33:53,900 --> 00:33:55,900 que extiende 989 00:33:55,900 --> 00:33:57,900 persona, o sea que hereda 990 00:33:57,900 --> 00:33:59,900 de persona. 991 00:33:59,900 --> 00:34:01,900 Si yo hago en otro package completamente 992 00:34:01,900 --> 00:34:03,900 distinto, class alumno 993 00:34:03,900 --> 00:34:05,900 extends persona, 994 00:34:05,900 --> 00:34:07,900 que es pública y por lo tanto 995 00:34:07,900 --> 00:34:09,900 la puedo ver, ahora yo puedo acceder 996 00:34:09,900 --> 00:34:11,900 a nombre, apellido y cosas por esto. 997 00:34:15,900 --> 00:34:17,900 También. Con protected 998 00:34:17,900 --> 00:34:19,900 desde el paquete o que hereda. 999 00:34:19,900 --> 00:34:21,900 Con package sólo 1000 00:34:21,900 --> 00:34:23,900 del paquete, 1001 00:34:23,900 --> 00:34:25,900 o sea que si te hereda, ¿no? 1002 00:34:25,900 --> 00:34:27,900 Private sólo 1003 00:34:27,900 --> 00:34:29,900 dentro de la clase, 1004 00:34:29,900 --> 00:34:31,900 public desde donde está. 1005 00:34:31,900 --> 00:34:33,900 ¿Sí? Cuatro niveles 1006 00:34:33,900 --> 00:34:35,900 de visibilidad de 1007 00:34:35,900 --> 00:34:37,900 estas 1008 00:34:37,900 --> 00:34:39,900 cosas. También los métodos 1009 00:34:39,900 --> 00:34:41,900 tienen lo mismo. 1010 00:34:43,900 --> 00:34:45,900 Y otras cosillas. 1011 00:34:45,900 --> 00:34:47,900 Constructores. 1012 00:34:47,900 --> 00:34:49,900 ¿Vale? Existe 1013 00:34:49,900 --> 00:34:51,900 el constructor super. 1014 00:34:53,900 --> 00:34:55,900 Este es un constructor que 1015 00:34:55,900 --> 00:34:57,900 lo que te está diciendo es llama 1016 00:34:57,900 --> 00:34:59,900 al constructor de mi superclase. 1017 00:34:59,900 --> 00:35:01,900 Si yo soy un alumno 1018 00:35:01,900 --> 00:35:03,900 y extendo persona, 1019 00:35:03,900 --> 00:35:05,900 cuando llamo super, 1020 00:35:05,900 --> 00:35:07,900 estoy llamando el constructor 1021 00:35:07,900 --> 00:35:09,900 de persona. 1022 00:35:09,900 --> 00:35:11,900 ¿Sí? ¿Con qué parámetros? 1023 00:35:11,900 --> 00:35:13,900 Lo uso aquí, con ningún 1024 00:35:13,900 --> 00:35:15,900 parámetro. Entonces me llamará el constructor 1025 00:35:15,900 --> 00:35:17,900 que no tiene parámetro. 1026 00:35:17,900 --> 00:35:19,900 Si yo llamo super de tres, 1027 00:35:19,900 --> 00:35:21,900 me estará llamando 1028 00:35:21,900 --> 00:35:23,900 aquel constructor de la clase, 1029 00:35:23,900 --> 00:35:25,900 de la superclase, que sea, 1030 00:35:25,900 --> 00:35:27,900 que tenga como parámetros 1031 00:35:27,900 --> 00:35:29,900 int. 1032 00:35:29,900 --> 00:35:31,900 ¿Entiende? 1033 00:35:31,900 --> 00:35:33,900 Veamos aquí 1034 00:35:33,900 --> 00:35:35,900 un ejemplo. 1035 00:35:35,900 --> 00:35:37,900 ¿Pueden heredar constructores? 1036 00:35:37,900 --> 00:35:39,900 Ehhh... 1037 00:35:39,900 --> 00:35:41,900 En un 1038 00:35:41,900 --> 00:35:43,900 cierto sentido, sí. Pero no lo 1039 00:35:43,900 --> 00:35:45,900 heredas como tal. Porque 1040 00:35:45,900 --> 00:35:47,900 el constructor de persona no es el mismo 1041 00:35:47,900 --> 00:35:49,900 que el constructor de alumno. Son dos cosas distintas. 1042 00:35:49,900 --> 00:35:51,900 Pero desde alumno, lo que puedes 1043 00:35:51,900 --> 00:35:53,900 hacer es utilizar los constructores 1044 00:35:53,900 --> 00:35:55,900 de tu par. 1045 00:35:55,900 --> 00:35:57,900 Que es aquí. 1046 00:35:57,900 --> 00:35:59,900 Yo tengo 1047 00:35:59,900 --> 00:36:01,900 un constructor alumno sin parámetros 1048 00:36:01,900 --> 00:36:03,900 que llama super sin parámetros. 1049 00:36:03,900 --> 00:36:05,900 Y no hace nada más. 1050 00:36:05,900 --> 00:36:07,900 Esto quiere decir que 1051 00:36:07,900 --> 00:36:09,900 cuando creo un alumno, 1052 00:36:09,900 --> 00:36:11,900 la primera cosa que hago es llamar 1053 00:36:11,900 --> 00:36:13,900 el constructor 1054 00:36:13,900 --> 00:36:15,900 de persona, porque es tendo 1055 00:36:15,900 --> 00:36:17,900 persona, ¿vale? 1056 00:36:17,900 --> 00:36:19,900 Que no tiene parámetros. Es decir, que la primera 1057 00:36:19,900 --> 00:36:21,900 cosa que se hace cuando se está 1058 00:36:21,900 --> 00:36:23,900 creando esto, es ejecutar 1059 00:36:23,900 --> 00:36:25,900 esto. 1060 00:36:27,900 --> 00:36:29,900 Entonces este alumno tendrá como nombre 1061 00:36:31,900 --> 00:36:33,900 anónimo. 1062 00:36:33,900 --> 00:36:35,900 ¿Se entiende? 1063 00:36:35,900 --> 00:36:39,900 Sin embargo, yo puedo hacer otro 1064 00:36:39,900 --> 00:36:41,900 constructor de alumno 1065 00:36:41,900 --> 00:36:43,900 que sea este de aquí. 1066 00:36:43,900 --> 00:36:45,900 Alumno pilla 1067 00:36:45,900 --> 00:36:47,900 string, nombre, apellido, 1068 00:36:47,900 --> 00:36:49,900 año de nacimiento, 1069 00:36:49,900 --> 00:36:51,900 grupo y horario. 1070 00:36:51,900 --> 00:36:53,900 Pilla todo esto este constructor. 1071 00:36:53,900 --> 00:36:55,900 Y luego ¿qué hace? 1072 00:36:55,900 --> 00:36:57,900 Pues llama 1073 00:36:57,900 --> 00:36:59,900 super 1074 00:36:59,900 --> 00:37:01,900 con nombre, apellido, 1075 00:37:01,900 --> 00:37:03,900 año de nacimiento. 1076 00:37:03,900 --> 00:37:05,900 ¿Sí? ¿Y qué es esto? 1077 00:37:05,900 --> 00:37:07,900 Pues esto es 1078 00:37:07,900 --> 00:37:09,900 este 1079 00:37:09,900 --> 00:37:11,900 constructor de aquí. 1080 00:37:13,900 --> 00:37:15,900 ¿Vale? Constructor que tiene nombre, 1081 00:37:15,900 --> 00:37:17,900 apellido, año de nacimiento. 1082 00:37:17,900 --> 00:37:19,900 Y entonces esta parte del constructor lo que 1083 00:37:19,900 --> 00:37:21,900 hará es rellenarme estas 1084 00:37:21,900 --> 00:37:23,900 características, que son las de persona. 1085 00:37:23,900 --> 00:37:25,900 Me está construyendo un objeto 1086 00:37:25,900 --> 00:37:27,900 persona. Pero 1087 00:37:27,900 --> 00:37:29,900 no es que hay dos objetos, es el mismo objeto. 1088 00:37:29,900 --> 00:37:31,900 ¿Vale? Una vez 1089 00:37:31,900 --> 00:37:33,900 que haya acabado de 1090 00:37:33,900 --> 00:37:35,900 construir la parte de persona, 1091 00:37:35,900 --> 00:37:37,900 que sería como hacer esto. 1092 00:37:41,900 --> 00:37:43,900 ¿Sí? La parte de persona. 1093 00:37:43,900 --> 00:37:45,900 A ese punto 1094 00:37:45,900 --> 00:37:47,900 sigo adelante 1095 00:37:53,900 --> 00:37:55,900 con otra cosa. O sea que 1096 00:37:55,900 --> 00:37:57,900 pon grupo, le pone el grupo de horario. 1097 00:37:57,900 --> 00:37:59,900 Sería esto. 1098 00:37:59,900 --> 00:38:01,900 Pon grupo es esta, 1099 00:38:01,900 --> 00:38:03,900 es este metodito de aquí. 1100 00:38:03,900 --> 00:38:05,900 Entonces se ejecutará este 1101 00:38:05,900 --> 00:38:07,900 metodito de aquí, que lo que hará es 1102 00:38:07,900 --> 00:38:09,900 comprobar que el grupo no sea nulo y lo así. 1103 00:38:09,900 --> 00:38:11,900 ¿Sí? 1104 00:38:11,900 --> 00:38:13,900 Si os fijáis, 1105 00:38:13,900 --> 00:38:15,900 es como decir, la parte 1106 00:38:15,900 --> 00:38:17,900 que no es mía propia, 1107 00:38:17,900 --> 00:38:19,900 la parte que heredo, 1108 00:38:19,900 --> 00:38:21,900 pues que se encargue la superclase 1109 00:38:21,900 --> 00:38:23,900 de hacer. 1110 00:38:23,900 --> 00:38:25,900 Y una vez que ha hecho la parte de superclase, 1111 00:38:25,900 --> 00:38:27,900 pues yo me ocupo 1112 00:38:27,900 --> 00:38:29,900 de la parte propia mía específica. 1113 00:38:33,900 --> 00:38:35,900 ¿Sí o no? 1114 00:38:35,900 --> 00:38:37,900 Cuidado, 1115 00:38:37,900 --> 00:38:39,900 si yo hiciera esto, 1116 00:38:39,900 --> 00:38:41,900 public alumno 1117 00:38:41,900 --> 00:38:43,900 que pilla estas tres cosas 1118 00:38:43,900 --> 00:38:45,900 y la hace así. 1119 00:38:45,900 --> 00:38:47,900 Funcionaría. 1120 00:38:47,900 --> 00:38:49,900 ¿Sí? 1121 00:38:49,900 --> 00:38:51,900 No estoy usando super aquí. 1122 00:38:51,900 --> 00:38:53,900 Lo estoy haciendo directamente. 1123 00:38:53,900 --> 00:38:55,900 Esto funcionaría igualmente. 1124 00:38:55,900 --> 00:38:57,900 ¿Vale? 1125 00:38:57,900 --> 00:38:59,900 Pero, 1126 00:38:59,900 --> 00:39:01,900 imaginaos que el nombre fuera 1127 00:39:01,900 --> 00:39:03,900 privado. 1128 00:39:03,900 --> 00:39:05,900 Esto funcionaría. 1129 00:39:05,900 --> 00:39:07,900 No. 1130 00:39:07,900 --> 00:39:09,900 Porque yo desde 1131 00:39:09,900 --> 00:39:11,900 como privado de arriba, 1132 00:39:11,900 --> 00:39:13,900 pues no podría acceder 1133 00:39:13,900 --> 00:39:15,900 al privado de 1134 00:39:15,900 --> 00:39:17,900 persona. 1135 00:39:17,900 --> 00:39:19,900 Pero con esto sí funcionaría. 1136 00:39:21,900 --> 00:39:23,900 Porque no estoy llamando 1137 00:39:23,900 --> 00:39:25,900 el 1138 00:39:25,900 --> 00:39:27,900 el atributo privado. 1139 00:39:27,900 --> 00:39:29,900 Estoy llamando el constructor, 1140 00:39:29,900 --> 00:39:31,900 que es público. 1141 00:39:31,900 --> 00:39:33,900 Y entonces sí funcionaría. 1142 00:39:35,900 --> 00:39:37,900 Sí. 1143 00:39:41,900 --> 00:39:43,900 Super es siempre la primera línea. 1144 00:39:43,900 --> 00:39:45,900 Sí. 1145 00:39:45,900 --> 00:39:47,900 Si quiero usar super, 1146 00:39:47,900 --> 00:39:49,900 la primera línea del constructor tiene que ser 1147 00:39:49,900 --> 00:39:51,900 llamada al constructor. 1148 00:39:51,900 --> 00:39:53,900 Porque es como un poco, yo estoy creando un alumno 1149 00:39:53,900 --> 00:39:55,900 y el primer paso de un alumno es crear una persona. 1150 00:39:55,900 --> 00:39:57,900 Una vez que tengo la persona ya le pongo la nota. 1151 00:39:57,900 --> 00:39:59,900 ¿Sí? 1152 00:39:59,900 --> 00:40:01,900 De hecho, si no lo pongo, 1153 00:40:01,900 --> 00:40:03,900 él en automático me hace 1154 00:40:03,900 --> 00:40:05,900 un super de este tipo. 1155 00:40:05,900 --> 00:40:07,900 Así. 1156 00:40:07,900 --> 00:40:09,900 Si no pongo nada 1157 00:40:09,900 --> 00:40:11,900 en el constructor de alumno y alumno 1158 00:40:11,900 --> 00:40:13,900 hereda de persona, 1159 00:40:13,900 --> 00:40:15,900 la primera cosa que me hace es esto. 1160 00:40:15,900 --> 00:40:17,900 En automático. 1161 00:40:17,900 --> 00:40:19,900 Hasta si no lo escribo. 1162 00:40:19,900 --> 00:40:21,900 ¿Sí? 1163 00:40:21,900 --> 00:40:23,900 Y veremos 1164 00:40:23,900 --> 00:40:25,900 que esto hace para... 1165 00:40:25,900 --> 00:40:27,900 Luego haremos pruebas y que te puede dar algún 1166 00:40:27,900 --> 00:40:29,900 problema. 1167 00:40:29,900 --> 00:40:31,900 ¡Prueba! 1168 00:40:31,900 --> 00:40:33,900 Esto es para probar los alumnos. 1169 00:40:33,900 --> 00:40:35,900 ¿Vale? Entonces veamos cómo 1170 00:40:35,900 --> 00:40:37,900 funciona. 1171 00:40:37,900 --> 00:40:39,900 Su Main. 1172 00:40:39,900 --> 00:40:41,900 Creo la persona vecina. 1173 00:40:41,900 --> 00:40:43,900 ¿Vale? Que se llama Luisa y no sé 1174 00:40:43,900 --> 00:40:45,900 qué más. 1175 00:40:45,900 --> 00:40:47,900 Y luego creo un alumno. 1176 00:40:47,900 --> 00:40:49,900 ¿Vale? Perfecto. 1177 00:40:49,900 --> 00:40:51,900 Ahora, un alumno 1178 00:40:51,900 --> 00:40:53,900 le puedo poner el grupo. 1179 00:40:53,900 --> 00:40:55,900 Si imprimo vecina, 1180 00:40:55,900 --> 00:40:57,900 me da datos 1181 00:40:57,900 --> 00:40:59,900 personales, bla bla bla. 1182 00:40:59,900 --> 00:41:01,900 Si imprimo un alumno, 1183 00:41:01,900 --> 00:41:03,900 me imprime 1184 00:41:03,900 --> 00:41:05,900 este de aquí. 1185 00:41:05,900 --> 00:41:07,900 El primer grupo dice este de aquí. 1186 00:41:07,900 --> 00:41:09,900 Fijaos que imprime 1187 00:41:11,900 --> 00:41:13,900 no está definido en alumno. 1188 00:41:13,900 --> 00:41:15,900 Aquí por ningún lado 1189 00:41:15,900 --> 00:41:17,900 encontráis imprime. 1190 00:41:17,900 --> 00:41:19,900 ¿Vale? 1191 00:41:19,900 --> 00:41:21,900 Es un método 1192 00:41:21,900 --> 00:41:23,900 heredado 1193 00:41:23,900 --> 00:41:25,900 de persona. 1194 00:41:25,900 --> 00:41:27,900 Pero lo puedo llamar 1195 00:41:27,900 --> 00:41:29,900 tanto 1196 00:41:29,900 --> 00:41:31,900 sobre 1197 00:41:31,900 --> 00:41:33,900 una persona como sobre un alumno. 1198 00:41:33,900 --> 00:41:35,900 Porque el alumno 1199 00:41:35,900 --> 00:41:37,900 es una persona. 1200 00:41:37,900 --> 00:41:39,900 ¿Sí? 1201 00:41:39,900 --> 00:41:41,900 Sin embargo, no podría hacer 1202 00:41:41,900 --> 00:41:43,900 vecina punto imprime grupo. 1203 00:41:43,900 --> 00:41:45,900 Porque imprime grupo es 1204 00:41:45,900 --> 00:41:47,900 un método 1205 00:41:47,900 --> 00:41:49,900 de alumno. 1206 00:41:49,900 --> 00:41:51,900 Entonces todos los alumnos pueden hacer 1207 00:41:51,900 --> 00:41:53,900 imprime grupo, pero las personas 1208 00:41:53,900 --> 00:41:55,900 no pueden hacer imprime grupo. 1209 00:41:55,900 --> 00:41:57,900 Porque una persona no es un alumno. 1210 00:41:57,900 --> 00:41:59,900 El alumno es una persona. 1211 00:41:59,900 --> 00:42:01,900 ¿Dudas? 1212 00:42:03,900 --> 00:42:05,900 Es un poco como si 1213 00:42:05,900 --> 00:42:07,900 todo lo que está aquí en persona 1214 00:42:07,900 --> 00:42:09,900 lo hubiese copiado 1215 00:42:09,900 --> 00:42:11,900 y pegado 1216 00:42:11,900 --> 00:42:13,900 por aquí. 1217 00:42:13,900 --> 00:42:15,900 Donde debería estar. 1218 00:42:15,900 --> 00:42:17,900 ¿Sí? 1219 00:42:17,900 --> 00:42:19,900 Lo he importado. 1220 00:42:19,900 --> 00:42:21,900 Lo he reescrito. 1221 00:42:21,900 --> 00:42:23,900 ¿Dudas sobre esto? 1222 00:42:23,900 --> 00:42:25,900 Eso es lo que 1223 00:42:25,900 --> 00:42:27,900 decíamos antes. 1224 00:42:27,900 --> 00:42:29,900 ¿Qué pasaría si el atributo nombre fuera declarado private? 1225 00:42:29,900 --> 00:42:31,900 O sea, sí. 1226 00:42:33,900 --> 00:42:35,900 En persona 1227 00:42:35,900 --> 00:42:37,900 el string nombre lo he puesto como privado. 1228 00:42:37,900 --> 00:42:39,900 Vale. 1229 00:42:39,900 --> 00:42:41,900 Si yo en 1230 00:42:41,900 --> 00:42:43,900 alumno 1231 00:42:43,900 --> 00:42:45,900 hiciera un constructor 1232 00:42:45,900 --> 00:42:47,900 así, que pilla nombre, apellido y nacimiento 1233 00:42:47,900 --> 00:42:49,900 e intentar hacer this.nombre 1234 00:42:49,900 --> 00:42:51,900 igual a nombre, esto explotaría. 1235 00:42:51,900 --> 00:42:53,900 Porque dentro 1236 00:42:53,900 --> 00:42:55,900 de alumno no está nombre. 1237 00:42:55,900 --> 00:42:57,900 El nombre está en persona. 1238 00:42:59,900 --> 00:43:01,900 Que es otra clase. Y como es privado 1239 00:43:01,900 --> 00:43:03,900 solo se puede utilizar en esa clase. 1240 00:43:03,900 --> 00:43:05,900 Fuera, desde 1241 00:43:05,900 --> 00:43:07,900 alumno 1242 00:43:07,900 --> 00:43:09,900 no se puede utilizar nombre. 1243 00:43:09,900 --> 00:43:11,900 Sí. 1244 00:43:11,900 --> 00:43:13,900 Si el get y el set son públicos. 1245 00:43:13,900 --> 00:43:15,900 O package o protected. 1246 00:43:15,900 --> 00:43:17,900 Vale. Sin embargo, 1247 00:43:17,900 --> 00:43:19,900 si hago así, 1248 00:43:19,900 --> 00:43:21,900 esto me funciona perfectamente. 1249 00:43:21,900 --> 00:43:23,900 Porque aquí no estoy accediendo al nombre. 1250 00:43:23,900 --> 00:43:25,900 Aquí no estoy accediendo 1251 00:43:25,900 --> 00:43:27,900 a la variable nombre. 1252 00:43:27,900 --> 00:43:29,900 Aquí estoy accediendo a este 1253 00:43:31,900 --> 00:43:33,900 constructor de aquí. 1254 00:43:33,900 --> 00:43:35,900 Que es público. 1255 00:43:35,900 --> 00:43:37,900 Por lo tanto, lo puedo llamar tranquilamente 1256 00:43:37,900 --> 00:43:39,900 desde una clase externa. 1257 00:43:39,900 --> 00:43:41,900 Y luego lo que hace es cambiarme el nombre. 1258 00:43:41,900 --> 00:43:43,900 Pero claro, lo cambia el nombre 1259 00:43:43,900 --> 00:43:45,900 desde dentro persona. 1260 00:43:45,900 --> 00:43:47,900 Y persona puede acceder al nombre 1261 00:43:47,900 --> 00:43:49,900 porque aún si es privado. 1262 00:43:49,900 --> 00:43:51,900 Porque es dentro de la misma clase. 1263 00:43:51,900 --> 00:43:53,900 ¿Se entiende? 1264 00:43:53,900 --> 00:43:55,900 Más o menos. 1265 00:43:55,900 --> 00:43:57,900 Luego esto hay que practicarlo. 1266 00:43:57,900 --> 00:43:59,900 Un ejercicio. 1267 00:43:59,900 --> 00:44:01,900 Hacemos el ejercicio. 1268 00:44:05,900 --> 00:44:07,900 Vamos a parar aquí y hacemos el ejercicio.