‫En el último video, aprendiste sobre la herencia y los conceptos básicos de la herencia,
‫pero ahora profundicemos un poco más y veamos varias palabras clave que serán relevantes cuando se trata de herencia.
‫Y los que veremos serán virtuales y la palabra clave de anulación.
‫Ahora, podría preguntarse, ¿por qué tenemos animales aquí en la pantalla?
‫¿Por qué muestra un montón de imágenes de animales?
‫Bueno, la cosa es que vamos a implementar una clase animal que luego nos permitirá heredar de
‫un animal será la clase padre, que tiene un par de habilidades, como ¿qué puede hacer un animal?
‫Puede hacer un sonido, puede comer y puede jugar.
‫Eso es al menos lo que vamos a permitir que haga la clase de animales.
‫Y, por supuesto, un animal puede hacer mucho más.
‫Le daremos un par de propiedades, como el nombre de propiedad The Age, y luego si tiene hambre, por ejemplo.
‫Entonces, solo si tiene hambre, comerá; de lo contrario, no comerá.
‫Así que esa es realmente la idea de crear una clase de animales.
‫Y ahora, por supuesto, podría implementar esta clase usted mismo.
‫Y luego usaremos la herencia para no solo usar los mismos métodos y las mismas propiedades, sino
‫también anularlos, básicamente diciendo, OK, el sonido que hace un animal que es un perro va a ser diferente al sonido. que, por
‫ejemplo, hace un mono o hace un mono o hace una jirafa o algo
‫así.
‫Bien, esto es básicamente lo que vamos a implementar.
‫Y al hacer eso, aprenderemos las diferentes palabras clave, como virtual y la palabra clave override.
‫Así que salgamos y creemos un nuevo proyecto para esto.
‫Voy a usar una aplicación de consola.
‫Lo llamaré demostración de anulación virtual.
‫Está bien.
‫Como un pequeño desafío para ti, si quieres probar esto por ti mismo, escribe una clase que
‫se llamará animal y tendrá el nombre de las propiedades age is hungry.
‫Luego, por supuesto, un constructor, luego un método se llama hacer sonidos, comer y jugar.
‫Bien, entonces posiblemente implemente todos esos si lo desea, porque esto solo le dará un poco
‫de práctica para crear todos estos métodos diferentes.
‫Y luego veremos cómo cambiarlos un poco para que podamos usarlos correctamente en herencia.
‫Muy bien, espero que lo hayas probado, por lo tanto, por supuesto, podemos usar Casey controlado para crear una nueva
‫clase y voy a llamar a este animal.
‫Así y ahora esta clase animal tendrá un par de propiedades, como dije, así que el
‫nombre propiedad, la propiedad, así como su propiedad hambrienta, y luego un constructor simple que usa todas estas propiedades, pueden ver
‫que solo estás usando GetSet.
‫Por cierto, si desea crear una propiedad rápidamente, simplemente ingrese prop doble toque y luego ingrese el tipo,
‫por ejemplo, cadena y luego aquí, por ejemplo, nombre.
‫Así es como lo haría muy rápido, sin tener que escribir más de lo necesario.
‫Está bien.
‫Así que este será nuestro constructor aquí con el nombre The Age y tiene hambre y puedes ver que tiene
‫hambre no es algo que vamos a establecer en el animal una vez que lo creamos, pero
‫lo vamos a establecer en dibujar al principio por defecto.
‫Así que lo estoy estableciendo en su valor predeterminado de hambre.
‫Bien, ahora dije que quiero tener un método que se llamará hacer sonidos.
‫Así que veamos este método.
‫Entonces estoy usando un método virtual vacío, hago sonido para que otras clases lo sobrescriban.
‫Estoy haciendo este método virtual para que pueda ser anulado por clases que hereden de animal.
‫Y veremos más adelante cómo hacerlo porque el sonido que hace un animal dependerá en gran medida
‫del animal en sí.
‫Entonces, tener hambre es algo que todos los animales comparten porque, bueno, así es como funcionamos.
‫Necesitamos energía y la obtenemos a través de la comida.
‫Y para motivarnos a conseguir comida o comer, tenemos la sensación de hambre.
‫Pero este método virtual que tenemos aquí hace que los sonidos no tengan que estar vacíos.
‫Así que veamos este método de comer aquí.
‫Y este método de comer también será un método virtual.
‫Esto permite que nuestras subclases anulen este método.
‫Entonces, si queremos anular el método, podemos hacerlo, pero no es necesario.
‫La funcionalidad general será la que puedes ver aquí.
‫Así comprobará si el animal tiene hambre.
‫Si es así, simplemente imprimirá el nombre y dirá que está comiendo y luego, si no tiene hambre, dirá
‫que el nombre no tiene hambre.
‫Entonces el nombre es, por cierto, propiedad de nuestro animal.
‫Así que este nombre es propiedad del animal.
‫Bien, ese será nuestro método de alimentación y también lo haremos virtual.
‫Y luego otro método virtual que será jugar.
‫Bien, entonces este método virtual como el que básicamente dirá el nombre se está reproduciendo en la consola.
‫Ahora estamos usando algunas declaraciones de línea derecha muy simples, esto podría ser, por supuesto, mucho más complejo.
‫Bien, esto es solo para simplificar todo y hacerlo más humanamente comprensible, por así decirlo, porque jugar, comer y
‫esas cosas, esto es algo que podemos entender directamente porque lo hemos visto en nuestras vidas
‫y lo hemos hecho. nosotros mismos, así como leer datos de una base de datos o algo por el
‫estilo.
‫Eso no es algo que solemos ver en la vida real.
‫Bueno.
‫Está bien.
‫Así que ahora definamos nuestras clases que se derivarán de animal, de modo que heredarán de la clase animal.
‫Así que sigamos y usemos el control K y veamos nuestra moneda común.
‫Y esto abrirá la pantalla donde podemos crear una clase o, alternativamente, simplemente crear una
‫clase.
‫De lo contrario, voy a crear una clase de perro y esta clase heredará de animal como tal.
‫Ahora, ya puede ver que no hay ningún argumento dado que corresponda al nombre del parámetro formal requerido de
‫la cadena del nombre del animal.
‫Entonces necesitamos crear un constructor aquí.
‫Así que sigamos adelante y creemos un constructor simple, que seguirá la misma estructura.
‫Tendrá el nombre y la edad y tendrá un nombre base bien usado para que podamos usar el mismo constructor que hemos
‫definido ese animal.
‫Así que ahora voy a usar esta nueva propiedad llamada Abie o es feliz y será un booleano.
‫Esto básicamente se almacenará si el animal en este caso, el perro está feliz.
‫Entonces dirá verdad si el perro es feliz y los perros son animales felices.
‫Entonces, por defecto, el perro estará feliz.
‫Está bien.
‫Ahora anulemos el método ITW.
‫Bien, simplemente anulemos el método virtual, eat, y por lo tanto usaremos esta palabra clave de anulación.
‫Bien, bien público, como un método normal, pero estamos agregando este teclado de anulación.
‫Por lo tanto, invalide ITW mismos dos o similar a lo que teníamos aquí donde también teníamos este método.
‫Pero aquí usamos un teclado virtual.
‫Entonces, este teclado virtual permite que nuestras subclases, nuestras clases heredadas de los hijos, usen la palabra de anulación
‫para básicamente anular la funcionalidad de la misma.
‫Si aún desea llamar a la funcionalidad base de la clase padre de la clase animal, en este
‫caso, necesitamos usar el DOT basado en comer OK, la base dirá OK llamado el método de la base y la base estará bien, lo
‫ve aquí. animal.
‫Entonces, una vez que haga doble clic en la base y esté resaltada, podrá ver que el animal también está resaltado
‫porque animal es su clase base.
‫Si mantiene la tecla de control HELT y hace clic en la base, saltará a la clase animal porque esa es
‫la clase base.
‫Y pudiste ver que hay tres referencias de nuestra clase base y eso está aquí, esta base, así como esta
‫base y este animal aquí en la parte superior.
‫Bien, en este punto básicamente estamos usando nuestra clase base aquí, la funcionalidad de la clase base.
‫No anularemos nada.
‫Entonces, básicamente, estamos diciendo que un perro es de la misma manera que cualquier otro animal.
‫Así que no hay nada especial aquí.
‫Ahora, veamos el método de hacer sonidos, porque este será bastante diferente porque el perro
‫tiene que hacer los sonidos correctamente y su forma de hacerlos será guau.
‫También podría ser guau o quién para lo que sea.
‫Sin embargo, a tu perro le gusta hacer sonidos.
‫Y así es como en mi caso, el perro emitirá un sonido.
‫Entonces esto será diferente para cada animal.
‫Bien, entonces cada animal marcará la diferencia.
‫Y es por eso que anulamos nuestro sonido.
‫Bueno, con bueno, esto puede sonar que teníamos aquí, lo estamos anulando con nuestra implementación individual para
‫nuestro perro.
‫Y ahora hagamos lo mismo con el juego, porque el perro solo quiere jugar si está feliz, así que supongamos que ese
‫es el caso.
‫Entonces aquí, si miramos el juego, dice que el perro está jugando, pero no estoy contento con este resultado.
‫Digamos que un perro solo jugará si es un perro feliz.
‫Entonces, lo que podemos hacer es anular el juego de palabras y verificar si el perro está feliz y solo entonces jugar.
‫Así que ya hemos sobrescrito la funcionalidad animal base con la funcionalidad.
‫Bueno, con nuestra propia funcionalidad para el perro o nuestra funcionalidad única para el perro donde agregamos
‫una condición.
‫Pero esto podría ser cualquier cosa.
‫No está limitado a una condición.
‫Esto podría ser como un tipo de implementación completamente diferente.
‫Ni siquiera necesitas usar el juego básico, por lo que eres totalmente libre de usar lo que quieras.
‫Por ejemplo, en el método make sound, puede ver que no estamos usando base make sound porque, bueno, en el
‫método make sound, no hay nada que llamar.
‫Entonces no hay nada interesante aquí.
‫Pero incluso si lo hubiera, no tenemos que pedir un beso de base o un juego de base.
‫Podríamos implementar algo completamente diferente aquí si quisiéramos.
‫Bien, ese será nuestro perro.
‫Ahora sigamos y guardemos esas dos clases y trabajemos con ellas en nuestro archivo CSS del programa.
‫Bien, aquí esto es, en primer lugar, crea un perro como, así que voy a llamar al perro, que será
‫un perro nuevo.
‫El cual tendrá el nombre de Siff y el perro tendrá 50 años, tan lindo perro viejo y ahora.
‫Podemos escribir algo así como para poder acceder a la propiedad del perro así, línea roja, nombre del perro, para
‫que podamos obtener el nombre del perro y la edad del perro usando perro, nombre del perro y punto h del perro.
‫Y luego podemos, por ejemplo, jugar y comer.
‫Bien, hagámoslo muy rápido, juego de perros, come perros.
‫Así que ejecutemos esto.
‫Y pudimos ver civis, 15 años, surfistas jugando, surfistas comiendo.
‫Bien, entonces juega y funcionó totalmente bien.
‫Por supuesto, también podemos utilizar manipulados.
‫Y haz sonido.
‫Entonces esto haría sonar al perro.
‫Ejecutemos esto.
‫Y ves que la acción dice caja.
‫Está bien.
‫Así que recapitulemos rápidamente y veamos cómo esto es diferente al ejemplo que teníamos en el último
‫video, entonces tenemos nuestra clase base y su clase base tiene un par de propiedades, y también tiene un par de
‫métodos de funciones, entonces hablar.
‫Entonces, aquí para hacer sonido, por ejemplo, el método AED y demás, y
‫los hacemos virtuales agregando la palabra clave virtual para hacerlos modificables o sobreexcitables en la clase heredada.
‫Así que Dogs está desheredando una clase o una subclase, y esta subclase ahora nos permite sobrescribir un método específico de
‫la clase base usando la palabra clave override.
‫Así que será ahora.
‫Anule la funcionalidad para que reemplace la funcionalidad o el código del método actual, excepto que, por supuesto,
‫use el espacio que cada uno.
‫Entonces, lo que hará es básicamente llamar al método eat de la clase base, es decir, del
‫padre.
‫Pero puede implementar su propio código aquí.
‫No tienes que llamar a la clase base.
‫Por supuesto, puede agregar una condición para que la funcionalidad de la clase base se llame en una
‫condición específica.
‫O puede escribir el código que desee dentro de sus métodos de sobrescritura y luego algo más es
‫diferente.
‫Y es que estamos agregando código a nuestro constructor aquí para nuestro.
‫Subcláusula, OK, entonces este perro de clase heredado.
‫Por un lado está usando las mismas propiedades que está usando nuestra clase base, pero al mismo tiempo tiene una implementación
‫propia, ¿qué debería pasar una vez que se crea un perro?
‫Entonces, una vez que se crea un objeto de perro, en nuestro caso, es solo para decir que el perro va a ser feliz.
‫Muy bien, eso es todo para este video, vamos a mirar mucho más en la herencia, por supuesto, porque
‫todavía hay mucho que aprender.
‫Así que nos vemos en el siguiente video.