Ejemplo Herencia 1.2 - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Voy a volver esta cosa, eh. Vale.
00:00:00
Quería hacer esto yo.
00:00:04
No lo hace más.
00:00:07
Más que grande así no lo puede hacer.
00:00:08
Así.
00:00:11
Esto.
00:00:12
¿Por qué?
00:00:13
¿Existe edad? Sí. ¿Por qué existe edad?
00:00:26
Porque estendo ser vivo
00:00:33
y la pillo de ser vivo.
00:00:35
Perfecto. Edad existe.
00:00:37
¿Por qué se enfada?
00:00:38
Porque edad es private.
00:00:41
¿Vale? Private.
00:00:43
Como se diga.
00:00:44
entonces no puedo acceder directamente a edad, tendré que hacer super, punto edad, misma cosa.
00:00:45
Ahora, ¿qué es este super? Está llamando a este objeto, pero considerándolo no como planta, sino como ser vivo.
00:00:59
Pero igualmente estoy accediendo a una variable que no está definida en esta clase
00:01:20
Y que es privada para ser vivo
00:01:25
Esta variable aquí es accesible solo dentro de ser vivo
00:01:28
Por lo tanto, no puedo
00:01:32
Entonces, ¿cómo lo hago?
00:01:34
¿Como edad? ¿Por?
00:01:50
No, never in the life
00:01:54
Tendré que tener un setedad
00:01:55
Lo tengo el setedad
00:02:01
Sí
00:02:02
Uso este
00:02:03
Setedad
00:02:04
A edad
00:02:12
Ahora, en principio, así como lo hemos hecho, no sirve de nada, pero este set de edad podría estar comprobando que esta edad es un valor válido.
00:02:15
Y ahora le puedo poner que la edad de esta planta es menos 35 años.
00:02:26
Sin embargo, aquí podría poner que si la edad es menor que cero, entonces ponle cero, si la edad es mayor...
00:02:31
Sí, pero bueno.
00:02:38
Ahora, esto me funciona
00:02:39
Y si le pongo this.delante, funciona
00:02:44
Y si le pongo super.delante, funciona
00:02:53
¿Por qué?
00:02:58
Porque setEdad, este método aquí, es definido en ser vivo
00:03:28
Entonces, si lo uso así
00:03:31
Existe porque lo llama
00:03:35
Porque al heredar de ser vivo
00:03:38
Él también tiene acceso a este de aquí
00:03:41
Además es público
00:03:43
Si lo llamo así
00:03:45
Le estoy diciendo, oye mira, usa sobre este objeto
00:03:47
Este método
00:03:50
Y es correcto porque este método
00:03:52
Es de tipo planta
00:03:54
Que es un ser vivo
00:03:55
Y que entonces tiene este método
00:03:58
Si lo uso así
00:03:59
Misma cosa
00:04:01
Estoy utilizando este setEdad
00:04:03
Pero
00:04:06
En vez de utilizarlo sobre un objeto
00:04:08
De tipo planta
00:04:10
Lo estoy usando sobre este objeto considerándolo un ser vivo
00:04:11
Pero no importa porque el ser vivo tiene estos métodos
00:04:15
Entonces, en los tres casos se puede utilizar
00:04:19
¿Sí?
00:04:22
Ya está
00:04:25
Entonces, ahora me he creado una planta con todas estas características
00:04:26
Bla, bla, bla, bla, bla, bla
00:04:29
Métodos
00:04:30
Entonces
00:04:34
Métodos propios de una planta
00:04:36
Hemos dicho hacer fotosíntesis
00:04:40
Public
00:04:42
photosynthesizar que lo que hace claramente es todas las plantas hacen fotosíntesis todas
00:04:47
nuestras plantas hacen fotosíntesis, que es fotosintetización, ¿vale? Perfecto.
00:05:11
Más. Ahora, esto nos interesa relativamente simplemente para tener un método que sea propio de planta
00:05:25
y que no exista en ser vivo, ¿vale? Ahora, lo que nos interesa también hacer es jugar un poco con el overriding.
00:05:32
¿Sí? Entonces vamos a overridear el comer, ¿sí? Por ejemplo.
00:05:41
Entonces, ahora nosotros hacemos un public void comer, ¿sí?
00:05:54
Y lo que hace ahora es come como una planta, ¿sí?
00:06:03
¿Cómo come la planta?
00:06:06
Adquiero sales minerales desde mis raíces.
00:06:14
Ahora, la idea es que cuando llamaré comer sobre un ser vivo, me dirá come ñam ñam.
00:06:23
Cuando llamo comer sobre un objeto planta, me debería decir adquiero sales minerales desde mis raíces.
00:06:30
¿Sí?
00:06:39
Entonces, es completamente sobrescrito el método, hace una cosa completamente distinta.
00:06:42
Para el otro comer, en vez, comer con string algo, vamos a hacer una cosa un poquito distinta.
00:06:53
Quiero que escriba también esto, pero quiero que antes me haga lo mismo que hace este de aquí.
00:07:04
O sea, que diga que mi especie está comiendo este algo ñam ñam, que luego le pasaré suelo, por ejemplo, o agua.
00:07:11
Y después diga también que adquiere sales minerales desde sus raíces.
00:07:19
¿Cómo lo hago?
00:07:25
Opción número uno.
00:07:28
Pillo esto y lo copio debajo.
00:07:30
Lo hago así.
00:07:34
Funciona.
00:07:35
Muy bien.
00:07:38
No funciona.
00:07:39
¿Por qué no funciona?
00:07:40
No tengo problema.
00:07:44
No tengo acceso a esa especie.
00:07:45
Entonces, ¿cómo lo hago?
00:07:46
Así. Esto me está diciendo, usa este objeto, this, pero no como esta clase, como si fuera de la clase superior, o sea, ser vivo.
00:07:48
Y sobre este objeto, que ahora es de tipo ser vivo, o considéramelo de tipo ser vivo, llama comer algo.
00:08:08
Entonces, no estoy llamando esto, porque esto es el comer algo de esta clase. Es el comer algo de esta clase. Es decir, esto. Me escribe lo que me tiene que escribir y después vuelvo aquí.
00:08:16
Y aquí, además de haber hecho lo que hace mi clase superior, lo que hace un ser vivo, hago también lo que hace una planta.
00:08:31
¿Se entiende?
00:08:42
Entonces, aquí estoy totalmente desvinculado de lo que es la otra clase.
00:08:43
Aquí es sobrescrito completamente el otro método. El otro método no se usa.
00:08:53
Aquí estoy sobreescribiendo el método pero diciendo
00:08:58
Tú haz lo que hacen todos los seres vivientes
00:09:01
Y después haces algo más, más específico para esto
00:09:04
Aquí estoy sobreescribiendo, aquí estoy extendiendo lo que hace el otro
00:09:08
¿Se entiende la diferencia? ¿Dudas?
00:09:12
Morir en vez lo dejo igual
00:09:24
Lo dejo directamente solo en la clase ser vivo
00:09:27
Si os estáis fijando, estoy intentando hacer todas las varias posibilidades para que luego, cuando ahora lo use, pueda jugar con ellos.
00:09:31
Tengo un método que está solo en ser vivo, que es morir.
00:09:40
Un método que está solo en planta, que es fotosintetizar.
00:09:45
Y dos métodos que están en los dos sitios, o sea, se sobrescriben.
00:09:54
Uno que sobrescribe completamente
00:09:59
Y uno que reutiliza el primero
00:10:02
Y luego lo extiende
00:10:04
Cuatro casos distintos
00:10:05
¿Sí?
00:10:07
Vale
00:10:09
Esto es
00:10:10
¿Qué estoy haciendo aquí?
00:10:13
Overreading
00:10:17
¿Vale?
00:10:18
Sobrescribir
00:10:18
¿Cómo?
00:10:19
¿Podría hacer algo de shadowing?
00:10:22
Para hacer una
00:10:32
Una opción
00:10:33
Antes nosotros hemos dicho
00:10:35
La edad de esta aquí
00:10:37
Se te da de cosas por el estilo
00:10:38
Yo podría haber hecho un shadowing aquí de la edad, o sea, haber ocultado la edad del ser vivo y haber creado aquí otra vez int edad que me habría ocultado esta edad de aquí.
00:10:40
Y entonces habría podido poner aquí directamente this.edad es igual a edad sin tener que poner esto.
00:11:02
Ahora lo puedo hacer porque no estoy accediendo a esta edad de aquí, que es privada para esta clase,
00:11:16
más estoy accediendo a esta edad de aquí.
00:11:23
Lo dejamos así porque así luego vemos un poquito de la...
00:11:28
Hacemos algo con esta edad.
00:11:33
Nos paramos por ahora aquí, en el sentido de que tenemos solo dos niveles, planta y ser vivos.
00:11:36
Vamos a hacer un main donde creamos plantas, creamos ser vivos, hacemos ejemplos, llamamos
00:11:42
y vemos qué pasa. Tenemos estos dos ejemplos de ser vivos y plantas, vamos a utilizarlos
00:11:47
para ver qué logramos. Entonces me hago una clase main, donde dentro pongo un main.
00:11:53
Y ahora aquí voy a jugar con lo que tengo. ¿Qué tengo? Tengo plantas y tengo ser vivos.
00:12:07
Me creo un ser vivo, new ser vivo, le tengo que dar una especie. ¿Qué especie le doy?
00:12:12
La especie, ya hemos dicho su nombre, era su nombre en plan especie, un Cosus ferocis, que es, no lo sabemos.
00:12:30
Y también una planta, planta, es igual a new planta de Pinus pinea, esto me lo sé.
00:12:47
Pero además esto recibe más cosas, recibe la especie, recibe la altura, recibe, si, que era el otro, era un buleano, buleano hace siempre verde, true, y la edad, si, ok.
00:12:59
Entonces ahora yo tengo un ser vivo
00:13:32
Y una planta
00:13:35
Vamos a ver que puedo hacer con ellos
00:13:36
Entonces puedo hacer comer un ser vivo
00:13:38
sv.comer
00:13:41
¿Qué hará esto?
00:13:44
Me dice que el
00:13:51
Cosus ferocis
00:13:52
Está comiendo
00:13:54
Está carácter demoníaco
00:13:55
Lo sabéis
00:14:00
Si
00:14:01
Vale
00:14:12
Si le pongo aquí
00:14:14
¿Qué comen los
00:14:17
Cossus ferocius?
00:14:20
Claramente gominolas.
00:14:32
Perfecto.
00:14:38
Cossus ferocius está comiendo
00:14:39
gominolas.
00:14:42
¿Sí?
00:14:43
¿Esto es comer de quién es?
00:14:47
De ser vivo.
00:14:52
¿Sí? Va, fenomenal.
00:14:54
Ahora vamos a comer la planta.
00:14:56
Adquiero sal y minerales
00:15:06
desde mis raíces.
00:15:07
Este de aquí lo está usando
00:15:08
como comer, fijaos que
00:15:11
es el mismo método
00:15:13
pero este de aquí
00:15:15
ahora se aplica
00:15:17
a la
00:15:18
planta
00:15:20
y si yo le digo aquí
00:15:23
gominolas
00:15:25
también
00:15:28
bueno, cambiamos para que se vea que son distintos
00:15:28
esto suelo
00:15:32
esto es
00:15:33
el comer
00:15:39
con un parámetro
00:15:42
de ser vivo
00:15:44
Esto es comer con un parámetro de la planta
00:15:46
Fijaos que la primera cosa que hace es llamar el comer con algo
00:15:51
Con un parámetro del ser vivo
00:15:56
Es esta cosa aquí
00:16:00
Y luego a continuación añadía la frase esta de aquí
00:16:01
De adquiero sales minerales
00:16:06
Entonces este de aquí es el segundo
00:16:08
Esta es la primera llamada que hace esta cosa aquí
00:16:13
La segunda llamada tiene dos líneas
00:16:38
Porque la primera línea se escribe aquí
00:16:41
Y la segunda línea se escribe aquí
00:16:44
Esta es la llamada al verbo
00:16:51
¿Se entiende? ¿Estamos todos de acuerdo?
00:16:53
¿Sí?
00:16:56
Dudas
00:16:58
Ahora, vamos al 3
00:16:59
Tercera prueba
00:17:02
¿Vale?
00:17:10
Si yo digo
00:17:11
Siso
00:17:16
SV.edad
00:17:18
Funciona
00:17:22
¿Por qué no?
00:17:24
¿Por qué no?
00:17:33
Porque edad es privado
00:17:35
No puede acceder a edad de un ser vivo
00:17:36
Así
00:17:39
Tendré que usar
00:17:40
Getedad
00:17:41
¿Sí?
00:17:42
Aquí
00:17:47
La edad de mi ser vivo
00:17:47
Porque por defecto le daba cero y no la he cambiado
00:17:49
Correcto
00:17:51
Y si ahora hago lo mismo, pero con mi planta, no hace falta esto, ¿no?
00:17:53
Sí, no, esto sí.
00:18:10
PL.edad, ¿por qué esto funciona?
00:18:13
Este también tiene valor.
00:18:33
Pero si yo hago así, no me deja.
00:18:35
Tengo que hacer así.
00:18:45
¿Por qué aquí me deja y aquí no?
00:18:46
Os doy una pista.
00:18:53
La proyecta una planta.
00:18:56
Es algo complejo.
00:18:58
Como pista.
00:19:07
¿Qué proyecta una planta, un árbol?
00:19:08
¿Qué proyecta?
00:19:11
Exacto, shadowing.
00:19:15
¿Os acordáis?
00:19:18
Que en planta ya había vuelto a poner edad.
00:19:20
Y esta edad no es privada.
00:19:24
Entonces, desde planta puedo acceder tranquilamente a edad desde fuera.
00:19:27
Estaré accediendo a la edad de la planta.
00:19:33
Y si quisiera acceder a la edad de la planta, pero como ser vivo, podría.
00:19:37
Píllame PL, que es una planta.
00:20:11
Trátamela como si fuera un ser vivo y accede a su variable edad.
00:20:15
¿Se entiende?
00:20:22
Pero explota, porque ahora esta es privada.
00:20:24
Esta es la edad de la planta como si fuera un ser vivo.
00:20:43
¿Se entiende?
00:20:52
Esta cosa de aquí ha ocultado la edad del ser vivo
00:20:52
Entonces si yo accedo directamente a la edad de la planta
00:21:01
Me va a pillar su edad
00:21:05
Que como no es privada, puedo hacer lo que me da la gana con ella
00:21:07
Si quisiera, usando este objeto, un objeto planta
00:21:10
Acceder a uno de sus atributos de la clase superior
00:21:16
lo puedo hacer haciendo un casting explícito
00:21:24
pillo la planta
00:21:27
hago un casting explícito
00:21:28
a un ser vivo
00:21:30
entonces ahora esta cosa de aquí
00:21:31
es un ser vivo
00:21:34
y le digo accede
00:21:35
pero como en ser vivo el punto edad
00:21:37
no puede acceder directamente porque
00:21:40
el punto edad me daría un acceso a una variable
00:21:42
privada y no puedo
00:21:44
entonces uso el método que me permite
00:21:46
leerla
00:21:48
que es el getEdad
00:21:50
se entiende aquí este es un ejemplo de shadowing de cómo se usa los shadowing
00:21:50
de cómo se accede a las variables que han sido ocultadas
00:22:00
está claro que si yo quito este método de aquí ya no puedo acceder a este
00:22:04
valor puede acceder sólo a este si o no cuarta prueba que probamos hemos
00:22:09
probado estos métodos aquí hemos probado esto sería una prueba sobre
00:22:29
overriding, esto es una prueba
00:22:35
sobre
00:22:38
el otro
00:22:39
vale, la pregunta
00:22:42
que podía decir es esta
00:22:44
una pregunta que me podía decir es esta, vale, hemos dicho
00:22:46
que sv.comer
00:22:48
da una cosa
00:22:50
entonces me asumo
00:22:52
que si yo hago
00:22:54
ser vivo
00:22:56
tpl.comer
00:22:59
estas dos cosas darán
00:23:07
lo mismo. Comer decía voy comiendo ñam. Entonces si yo lo llamo sobre un ser vivo
00:23:11
me dirá voy comiendo ñam. Y si yo pillo una planta, la trato como un ser vivo y le
00:23:19
digo comer, me dirá ñam. ¿Por qué? Porque en el shadowing esto funciona. Pero en el
00:23:27
overriding, reading, no lo sé, lo que se hace no es tener en cuenta el tipo de la referencia,
00:23:43
más gana, o sea, el tipo de donde voy a buscar la implementación del método comer es el
00:23:54
tipo de la instancia. Y no obstante yo aquí tenga un objeto que te diga, sí, no, más
00:24:03
Trátamelo como referencia, como un ser vivo.
00:24:09
En realidad la instancia es una planta.
00:24:12
Entonces me usará el método de la planta.
00:24:15
¿Dudas? ¿Preguntas hasta aquí?
00:24:24
A ver, ¿qué otras cosas podemos probar?
00:24:36
Podemos probar los instance of.
00:24:38
A ver, sv, instance of, ser vivo.
00:24:39
Estas cuatro cosas
00:24:57
¿Qué me van a poner?
00:25:26
¿Qué saldrá de aquí?
00:25:32
¿Verdadero, verdadero, falso, falso?
00:25:33
¿Falso, vero, vero, falso, vero?
00:25:35
¿Qué sale?
00:25:37
¿De aquí qué sale?
00:25:39
No sé, decídmelo vosotros
00:26:00
¿SV es una instancia de ser vivo?
00:26:01
¿Quién dice true?
00:26:06
¿Quién dice falso?
00:26:08
los demás que dicen
00:26:12
porque han contestado
00:26:19
literalmente tres personas
00:26:21
uno dice
00:26:23
verdadero y dos dicen falso
00:26:25
verdadero
00:26:27
¿cuántos?
00:26:33
ahora de repente
00:26:37
soy siete
00:26:38
esto
00:26:39
¿quien dice falso?
00:26:42
¿quien dice verdadero?
00:26:48
tenemos un verdadero
00:26:51
cinco falsos
00:26:52
Esto
00:26:54
Bueno, pongamos T
00:26:56
True
00:26:58
¿Quién dice que esto es true?
00:26:59
¿Quién dice que esto es false?
00:27:04
Nadie
00:27:07
Esto es true seguro
00:27:08
¿Y esto?
00:27:09
¿Quién dice true?
00:27:14
¿Quién dice false?
00:27:18
True seguro
00:27:21
Esto es complejo de entender
00:27:22
Pero esto es súper fácil
00:27:25
Vamos a verlo
00:27:26
O sea, que aquí me espero un FFTT.
00:27:28
No, TFTT.
00:27:31
TFTT.
00:27:38
¿SV es una instancia de ser vivo?
00:27:42
¡Claro!
00:27:45
Fíjate.
00:27:46
New ser vivo.
00:27:47
¿Sí?
00:27:51
Vale.
00:27:52
¿Es una instancia de planta?
00:27:53
No.
00:27:55
Porque una planta es un ser vivo.
00:27:56
Pero ser vivo no es un planta.
00:27:59
¿Sí?
00:28:03
¿Sí? Es planta que extiende ser vivo, ¿no? Ser vivo que extiende planta.
00:28:03
Vale.
00:28:09
PL es un ser vivo. Esto quizás es el más complejo de todos.
00:28:12
Porque, no, PL es un new planta.
00:28:16
Pero como planta es un ser vivo, sí también.
00:28:21
Si os acordáis los cuadrados, es un cuadrado externo que es una planta, pero dentro tiene un ser vivo.
00:28:24
Cada planta tiene un ser vivo dentro.
00:28:30
¿Sí?
00:28:34
¿Se entiende?
00:28:35
Y entonces, este es verdadero, falso, verdadero, verdadero.
00:28:37
Y usando este de aquí, puedo saber si una variable que no sé exactamente qué es,
00:28:43
pues puedo saber si es un ser vivo, una planta, un objeto, un cocodrilo.
00:28:49
Y si aquí pongo object, esto es un objeto.
00:28:55
Y esto es un object.
00:29:10
¿Sí?
00:29:17
dudas, preguntas
00:29:20
vale
00:29:23
sigamos, que más cosas podemos
00:29:26
probar aquí, overriding, overloading
00:29:29
lo hemos visto
00:29:31
hemos visto los shadowing
00:29:32
constructores, más o menos
00:29:34
hemos visto todo lo que hemos visto ahora en esta prueba
00:29:37
vale
00:29:39
en estos últimos 10 minutos
00:29:40
vamos a crear
00:29:43
en vez de crear algo por debajo
00:29:47
de planta, creamos algo
00:29:49
al lado de planta, vale, animal
00:29:51
animal
00:29:52
extende también
00:29:55
ser vivo
00:29:56
public
00:30:00
el animal
00:30:06
me lo invento
00:30:09
tiene string sonido
00:30:11
public
00:30:13
animal
00:30:19
de
00:30:21
especie
00:30:23
string sonido
00:30:25
lo que hace es
00:30:32
super de especie
00:30:36
para crear el set vivo
00:30:40
y luego
00:30:44
dis.sonido es igual a
00:30:45
sonido, tiene un método
00:30:48
especial que es public
00:30:52
void
00:30:53
sonar
00:30:56
que lo que hace
00:30:58
es eso
00:31:01
digo
00:31:02
más sonido
00:31:05
vale
00:31:08
podría hacer, cambiar
00:31:13
el comer, pero lo dejo
00:31:15
lo dejo el otro, vale
00:31:17
ok, tenemos más o menos
00:31:19
claro
00:31:23
donde estamos
00:31:23
me hago otro main
00:31:26
si
00:31:32
y atención a esto
00:31:34
porque esto será vuestro futuro
00:31:37
me hago
00:31:39
un array
00:31:41
de seres vivos
00:31:46
que es igual a new
00:31:52
ser vivo
00:31:55
de
00:31:56
Cuatro
00:31:58
Y en seres vivos
00:32:00
De cero
00:32:08
Pongo claramente una planta
00:32:10
Ah, porque tengo que ponerle otra cosa
00:32:30
La altura
00:32:32
El...
00:32:33
¿Qué más tiene?
00:32:36
Tenía la edad al final
00:32:40
¿Y aquí qué tenía?
00:32:41
Ah, falso
00:32:44
Sí
00:32:45
En seres vivos de uno
00:32:47
Pongo claramente un animal
00:32:55
Lupus
00:32:58
Familiaris
00:33:03
Y coma
00:33:05
¿Cómo hace?
00:33:10
Bau
00:33:12
¿Sí?
00:33:12
¿Entendéis qué estoy haciendo?
00:33:16
Y no os sorprendéis de esta cosa
00:33:18
¿Veis una red de seres vivos que dentro no estoy metiendo ni un ser vivo?
00:33:20
seres vivos, hagamos otros dos seres vivos
00:33:26
esto es, no es un pino espinea
00:33:35
sino un árbol
00:33:41
arbóreus
00:33:43
y este de aquí es
00:33:46
¿cuál es el gato?
00:33:51
feli, félix, fél, fél, algo así
00:33:57
gatos
00:33:59
bonitos
00:34:01
que hace claramente
00:34:03
ahora la cosa interesante de esto
00:34:08
es que yo me he hecho un array
00:34:12
de seres vivos
00:34:14
y todos estos son seres vivos
00:34:16
por lo tanto
00:34:18
pueden estar allí
00:34:26
y si yo ahora hago un
00:34:27
for
00:34:30
ser vivo
00:34:31
x dos punto
00:34:36
seres vivos
00:34:38
y le digo
00:34:40
x punto comer
00:34:44
¿esto funciona o no?
00:34:46
Fijaos que las plantas comen como plantas y los animales comen como seres vivos.
00:35:02
O sea, que en automático, sin saber si lo que estoy pillando es una planta o un animal,
00:35:16
lo que está haciendo Java es ir a mirar no la referencia que son seres vivos,
00:35:24
Pero mirando la instancia, y en base a la instancia usa el método comer propio de la clase.
00:35:32
Entonces, cuando es una planta, va a usar el método comer de la planta, este método comer.
00:35:46
Sin embargo, cuando es un animal, como en animal no es definido el método comer, lo tirará de ser vivo.
00:35:54
O sea, esto. Comer. Si ahora me voy a animal y sobreescribo comer, diciendo sonido más ñam, ñam, ñam, las plantas comen como plantas y los animales comen como animales.
00:36:05
Vale, ahora quiero que los animales, además de comer, digan algo
00:36:46
Puedo hacer x.sonar
00:36:59
¿Por qué no?
00:37:07
Porque x es un ser vivo
00:37:12
El ser vivo no tiene sonar
00:37:20
Ningún problema
00:37:22
Animal, píllame x
00:37:26
Trátamelo como un animal
00:37:33
Y hazlo sonar
00:37:35
¡Perfecto!
00:37:37
Explosion
00:37:42
¿Por qué?
00:37:43
¿Por qué explotado?
00:37:45
Porque el primer X
00:37:53
Es una planta
00:37:56
Y cuando yo intento decir a una planta
00:37:59
Trártamela como un animal
00:38:02
Lanza un class cast exception
00:38:04
Error de casting de clase
00:38:09
Tú tienes una planta
00:38:12
y me estás diciendo trátala como un animal
00:38:14
y la planta no es un animal
00:38:16
¿se entiende?
00:38:17
entonces ¿qué puedo hacer?
00:38:21
para hacer esto
00:38:23
para hacer que los animales también suenen
00:38:24
¿qué puedo hacer?
00:38:26
no, porque el ser vivo no suena
00:38:28
y si una planta te habla
00:38:39
es un problema
00:38:42
no asumamos
00:38:44
la existencia de ent
00:38:49
entonces
00:38:51
más claro, si
00:38:54
x
00:38:57
Entonces, sí, puedes hacer este casting.
00:38:59
O sea, si yo quiero hacer un casting de este ser vivo a un animal,
00:39:14
antes me cercioro que es un animal.
00:39:18
Si este ser vivo es instancia de animal,
00:39:21
cuando será una planta, esto será falso.
00:39:29
Y por lo tanto, no hace esto.
00:39:33
cuando será animal, esto será true
00:39:35
y por lo tanto puede hacer un casting a animal
00:39:39
y hacerlo sonar, y entonces ya
00:39:43
no explota, y las plantas comen y nada más
00:39:46
mientras los animales comen y luego suenan
00:39:53
las plantas comen nada más, el animal
00:39:57
come y suena, pues esto
00:40:01
es lo que vamos a hacer
00:40:10
de aquí a breve
00:40:12
crear
00:40:14
arrays
00:40:16
de cosas
00:40:18
más genéricas
00:40:19
un array de personas
00:40:23
y dentro del array personas poner
00:40:24
profesores y alumnos
00:40:26
y luego hacer programas que me van buscando
00:40:28
en las personas, solo los alumnos
00:40:30
solo los profesores, o si tengo que hacer
00:40:32
una cosa sobre todas las personas, me la pueden hacer
00:40:34
sobre todas las personas
00:40:36
tener un array
00:40:37
que si usa un método
00:40:40
que ha sido sobrescrito, solo lo llamo
00:40:42
y será Java que elige
00:40:44
cuál es la implementación
00:40:46
correcta
00:40:49
del método que va a utilizar
00:40:50
y si en vez
00:40:52
hay métodos que son
00:40:54
solo propios de una clase
00:40:56
pues comprobar que es
00:40:58
de esa clase o no
00:41:00
y si es de esta clase poder utilizarla
00:41:02
si no es de esta clase, no.
00:41:04
¿Dudas?
00:41:05
- Materias:
- Programación
- Niveles educativos:
- ▼ Mostrar / ocultar niveles
- Formación Profesional
- Ciclo formativo de grado superior
- Primer Curso
- Subido por:
- Stefano C.
- Licencia:
- Reconocimiento - No comercial
- Visualizaciones:
- 9
- Fecha:
- 14 de enero de 2025 - 12:48
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 41′ 13″
- Relación de aspecto:
- 16:10 El estándar usado por los portátiles de 15,4" y algunos otros, es ancho como el 16:9.
- Resolución:
- 1152x720 píxeles
- Tamaño:
- 147.36 MBytes