Ahora vamos a hablar sobre el extenso que se puede implementar en unas clases Pero primero veamos un
ejemplo donde ocupemos.
Así que voy a crear una clase llamada héroe que va a tener dos propiedades estas sus propiedades van
a ser su poder y otro nombre cosas que ya hemos hecho anteriormente.
Esa es mi clase héroe.
Pero qué pasaría si yo también necesito crear una clase que sea para manejar villanos.
Por ejemplo clase villanos o villano.
Abren y cierran llaves y ésta también tiene el nombre y el poder pero su poder de esta manera el orden
de acá no importa.
Podremos colocar esto acá y sigue siendo lo mismo solo que yo lo moví para que quedaran exactamente
iguales la diferencia entre un héroe y un villano es que el héroe va a tener un valor entero llamado
valentía y el villano va a tener otro valor entero llamado maldad.
Pongámosle maldad eso es básicamente todo pero como ustedes podrán observar aquí está repetido el poder
del hombre cosa que aquí también tenemos repetido y podríamos manejar esas propiedades que esas dos
clases tienen en común.
Mediante una tercera clase esa tercera clase la voy a llamar personaje personaje.
Abro y cierro llaves.
El personaje va a tener el poder y pretender el nombre que son las dos cosas o las dos propiedades que
el héroe y el villano tienen en común.
Entonces ahora puedo evitar poner esto sea puedo quitarlas completamente.
La pueden comentar si así lo desean puedo quitar estas y decir que la clase héroe extiende extent de
personaje pero lo escriben bien no.
No así personaje lo que quiero decir con este extenso es que la clase héroe va a extender todas sus
propiedades y métodos que esta clase o la clase de personaje tiene.
Esto quiere decir que el héroe ahora tiene el poder y el nombre pero la única diferencia es que el héroe
si tiene valentía hagamos lo mismo con el villano.
Esta también extensa extiende de personaje.
Vamos a ver si esto es cierto queremos un método Main main abren y cierran llaves y queremos las dos
instancias de los héroes y del villano.
Empecemos con el héroe final Superman va a ser igual a nuevo héroe parentesis paréntesis.
Ahora las clases como está de acá también pueden ser abstractas porque así como lo tengo yo podría perfectamente
crearme un héroe llamado personaje y puede ser que otro programador no sepa que esa clase no es para
crear nuevas instancias de la misma.
Entonces podemos obligarlo a que simplemente no sirva para extender esas propiedades haciéndolo abstracta
abstracta.
Eso fue lo que vimos en la clase pasada.
De esta manera yo sé que no voy a poder crear instancias de personaje.
Puedo crear instancias de héroe y puedo crear instancias de villano entonces heroic perfectamente puede
decir Superman punto y aquí está el poder y el nombre cosas que vienen.
Por qué es tan extendida de personaje.
Puedo decirle que el nombre va a ser igual a Clark Kent.
Y aquí me falta un punto y coma.
Hagamos lo mismo con el villano final voy a ponerle Luthor para ser igual a nuevo villano parentesis
punto y coma.
Y puedo decir ahora que Luthor punto nombre va a ser igual a Lex Luthor.
Perfectamente puedo hacer ahora.
Esta tiene otra ventaja que si en un futuro yo necesito agregar propiedades o métodos perfectamente
lo hago en esta clase y todos los demás o las demás clases que extienden de esta clase personaje automáticamente
e instantáneamente van a obtener todas esas propiedades y métodos.
Eso es todo lo que yo necesito que comprendamos por los momentos de los extent a lo largo del curso
nosotros lo usaremos bastante pero ustedes ya saben que lo que estoy haciendo acá es extender todas
las propiedades y métodos que tenga la clase a la cual yo estoy extendiendo.
Lo dejamos así continuamos con el siguiente video.