‫En este video, aprenderás sobre la herencia en C Sharp o sobre programación en general, voy a
‫tratar de mantenerlo súper simple porque puede volverse bastante complicado si lo miras, porque están sucediendo
‫muchas cosas.
‫Pero voy a simplificarlo tanto como sea posible, está bien, porque la idea de herencia es realmente
‫la reutilización del código.
‫Y esto nos permite no solo reducir nuestro propio código, sino también reducir el código de otros desarrolladores o
‫incluso de otros espacios de nombres directamente sin tener que escribir mucho código manualmente una y otra y otra vez, lo
‫que estaba ahí antes.
‫Y esto realmente reduce el código repetido o redundante.
‫Bien, entonces la idea de herencia es básicamente un concepto fundamental de la programación orientada a objetos.
‫Le permite definir una clase secundaria que reutiliza o hereda, extiende o modifica el comportamiento de una clase
‫principal.
‫La clase cuyos miembros se heredan se llama clase base.
‫La clase que hereda los miembros de la clase base se llama clase derivada.
‫OK, entonces, ¿qué significa esto?
‫Bueno, en términos simples, si tiene más de una clase con el mismo código
‫o funcionalidad, pero difiere ligeramente, podemos poner este código repetido o redundante en una clase separada
‫y luego hacer que nuestra clase lo herede.
‫Este código puede ser la funcionalidad del método, por así decirlo, o propiedades, que son los atributos de
‫nuestras clases.
‫Así que veamos un ejemplo y, por lo tanto, creo este nuevo proyecto aquí, al que llamo Herencia
‫Demel.
‫Está bien.
‫Así que sigamos adelante y veamos este ejemplo.
‫Entonces, por lo general, cuando está trabajando con varias clases, sigue adelante y crea una nueva clase aquí.
‫Bien, hagámoslo aquí también.
‫Por supuesto, podría crear la clase en el mismo archivo, pero esa no es una buena práctica.
‫Así que sigamos adelante y llamemos a esta clase de radio.
‫Está bien.
‫Así que aquí está la clase que dice anuncio de radio.
‫Y ahora tenemos esta clase de radio, que lleva el mismo nombre.
‫Bien, entonces ambas clases, el programa pregunta dónde tenemos nuestro método principal, que es el punto de partida de
‫nuestra aplicación, y la clase de radio está en la misma forma.
‫Entonces vamos a tener dos clases.
‫Uno será radio y el otro será TV.
‫Supongamos que tenemos un par de propiedades.
‫Entonces, por ejemplo, un booleano que determina el estado de la radio es encendido y luego la marca de la
‫radio, por lo que es una Panasonic o cualquier otra marca que exista.
‫Y luego tenemos un constructor simple aquí.
‫Por lo tanto, definitivamente debe comprender los conceptos básicos de las clases.
‫Si desea comprender completamente la herencia, generalmente es algo que recomendaría comprender antes de llegar a
‫la herencia porque se construye uno encima del otro.
‫Bien, entonces quiero tener dos métodos porque esta será básicamente la funcionalidad.
‫Entonces uno va a encender la radio, será el método de encendido y el otro será el método
‫de apagado.
‫Entonces puede encender y apagar la radio o encenderla usando estos dos métodos.
‫Y luego tendremos otro método que nos permitirá escuchar la radio.
‫Bien, tenemos este método aquí llamado Escuchar radio y lo comprobará.
‫¿Está encendida la radio ahora mismo?
‫Entonces, ¿esto está en una propiedad aquí, este booleano, será de hecho cierto?
‫Y si eso es cierto, entonces podemos escuchar la radio y la forma en que vamos a indicar que estamos escuchando
‫la radio será con esta declaración de línea roja de la consola que dice escuchando la radio y de
‫lo contrario, vamos a imprimir este mensaje de error que dice que la radio está apagada.
‫Enciéndalo primero.
‫De acuerdo, antes de que podamos escucharlo, debemos encenderlo.
‫Está bien.
‫Así que esa es nuestra radio ahora.
‫Ahora, imagina que tienes otra clase, que será.
‫La televisión.
‫Bien, sigamos adelante y creemos una nueva clase, y por lo tanto, puede ir aquí para agregar y luego agregar una clase
‫y darle un nombre a esta clase.
‫Voy a llamarlo TV.
‫Y ahora, en esta clase, seguiré adelante y tendré un par de propiedades similares a las que teníamos aquí.
‫Básicamente, también voy a tener los estados si está encendido o apagado.
‫Así que agreguemos esas dos propiedades aquí.
‫Entonces tendré un constructor simple que me permitirá establecer esos valores cuando esté creando un nuevo objeto
‫de TV.
‫Así que aquí está, así como String Brand, que establece las propiedades.
‫Luego tendré que individualizar otros métodos para poder encender el televisor y apagarlo, similar a lo que hice en la
‫radio para poder básicamente copiar este código.
‫Pero será un poco diferente porque teníamos los comentarios que decían radio aquí, pero ahora esto será
‫TV.
‫Entonces, este método encenderá el televisor y este lo apagará o apagará.
‫Bien, entonces solo necesitamos tener otro método que nos permita ver la televisión y hará algo muy similar a lo
‫que hace nuestra radio.
‫Nos permite ver la televisión solo si la televisión está encendida.
‫Si está apagado, primero tendremos que encender el televisor.
‫Bien, ahora tenemos estas dos clases y si las miras, son terriblemente similares.
‫Así que hay muchas cosas que son exactamente iguales, básicamente porque esta propiedad está tan bien como
‫esta marca.
‫Ellos son iguales.
‫Los tenemos en ambas clases.
‫Entonces, básicamente, tenemos código redundante.
‫Tenemos que copiar y pegar un montón de código y es más o menos lo mismo.
‫Entonces, ¿cómo podemos hacer que no tengamos que copiar y pegar mucho código y reescribir código y básicamente tener
‫código redundante?
‫Bueno, ese es el objetivo del concepto de herencia.
‫Entonces la herencia viene al rescate.
‫Podemos resolver este problema creando una tercera clase llamada dispositivo eléctrico.
‫Este contendrá todas las funcionalidades y propiedades compartidas de un dispositivo eléctrico que tenemos.
‫Así que echemos un vistazo a esos.
‫¿Cuáles son los que tenemos que son iguales?
‫Entonces, ¿cuáles son las propiedades que son iguales para nuestra televisión y para la radio?
‫Bueno, en nuestro caso son todas las propiedades, en realidad, pero no tiene por qué ser todas en este
‫caso.
‫Será porque no tenemos más propiedades.
‫Pero las dos propiedades que tenemos allí serán las mismas.
‫So is on y Brent son propiedades que existen tanto en la televisión como en la radio.
‫Entonces nuestra nueva clase debería tener esas dos propiedades.
‫Y luego tenemos los dos métodos que nos permiten encender el televisor y encender la radio o apagar la radio y
‫también apagar el televisor.
‫Bien, para ti, un pequeño ejercicio si quieres probar esto, porque supongo que no eres un rol y programador en
‫ese momento, pero te sentirás mucho más seguro cuando pruebes esto.
‫Así que continúe y cree una clase que tenga todas estas propiedades y estos métodos que podamos mostrar todos los que se comparten entre
‫las dos clases, créelos en una clase separada y llame a esta clase de dispositivo
‫eléctrico.
‫En realidad, puedes llamarlo como quieras, pero lo voy a llamar dispositivo eléctrico como tal.
‫De acuerdo, espero que publiques el video y lo pruebes, así que voy a crear una nueva clase y, por cierto, por
‫supuesto, ves que puedes usar el control de acceso directo Casey.
‫Entonces hagamos eso en este caso, control, ¿ves?
‫Y esto abrirá esta ventana aquí y me permitirá cambiarla a eléctrica.
‫Dispositivo así, y ahora este vidrio tendrá las propiedades que estamos compartiendo entre las otras dos clases, así que
‫las colocamos aquí, el booleano que determina el estado del dispositivo eléctrico, ¿está
‫encendido o no?
‫Y luego la marca del dispositivo.
‫Y luego, por supuesto, necesitamos tener un constructor.
‫Entonces el dispositivo eléctrico está encendido.
‫Y Brent y finalmente, tenemos la funcionalidad que son métodos.
‫Entonces, siempre que tenga una funcionalidad, la pones en métodos y la funcionalidad es encender
‫o apagar algo.
‫Por lo tanto, siempre que ocurra una acción con su clase o con el objeto que está
‫usando, deberá usar métodos.
‫Nuevamente, eso es lo que estamos haciendo aquí.
‫Entonces estamos usando un método para encender algo, en este caso, el dispositivo eléctrico y apagarlo
‫o encenderlo y apagarlo.
‫Bien, eso es básicamente lo que estamos haciendo aquí.
‫Entonces, ahora que tenemos nuestras propiedades y métodos para compartir en una clase, hagamos que
‫la otra clase de las clases de TV y radio herede de esta clase o, en otras palabras, ampliemos esta clase.
‫Bien, este es solo un término diferente que puede usar aquí.
‫Entonces, nuestra TV y nuestra radio ahora extenderán la clase de dispositivos eléctricos.
‫Entonces, ¿cómo podemos hacer eso?
‫Bueno, empecemos por la radio, porque la tele será entonces un pequeño reto para ti
‫donde tendrás que hacerlo tú mismo.
‫Así que aquí usó dos puntos y luego el nombre de la clase que desea heredar del dispositivo eléctrico
‫es la clase que ahora heredaré por radio de donde nuestra radio extenderá la funcionalidad de la
‫clase de dispositivo eléctrico.
‫Bien, entonces dos puntos y luego el nombre de la clase que desea extender y lo que es
‫importante, esto es, por supuesto, que esta clase tiene que estar en el mismo espacio de nombre o tiene que agregar el espacio de nombre
‫aquí.
‫Entonces, en nuestro caso, no usamos ninguno de esos.
‫Solo usamos system.
‫Pero como estamos en el mismo espacio de nombres, por lo que la clase de dispositivos eléctricos está en el mismo espacio de nombres
‫que la radio y la TV, podemos hacerlo así.
‫Pero ahora podemos ver que nuestro boliano tiene una advertencia aquí.
‫Entonces, cuando pasas el cursor sobre tu yo. D. , por lo que Visual Studio te dirá que Radio Dot está en alturas.
‫Se están utilizando dispositivos eléctricos de miembros heredados.
‫La nueva palabra clave si se pretendía esconder.
‫Básicamente, estamos usando el mismo nombre de propiedad y aquí quiere evitar eso porque ya tiene esta propiedad, por
‫así decirlo, porque la está heredando del dispositivo eléctrico.
‫Así que ahora puede ocultarlo o anularlo con este que ha creado aquí.
‫Si desea usar algo con el mismo nombre exacto, pero debería comportarse de alguna manera diferente, entonces puede hacerlo,
‫aunque esa es una buena práctica que necesariamente depende del caso de uso, por supuesto.
‫Entonces esto se debe a que ahora la clase de radio contiene dos propiedades del mismo nombre que estamos ocultando o cubriendo.
‫Ese es un término diferente aquí, las propiedades que heredamos de la clase de dispositivos eléctricos.
‫Entonces eliminaremos el código redundante que ya no necesitamos.
‫Así que deshagámonos de eso.
‫Y, por supuesto, el código redundante no es solo asignar o crear las propiedades, sino también tener
‫estos métodos aquí.
‫Así que deshagámonos de ellos también.
‫Ahora, tenemos otro error que aparece aquí, y ese es este constructor de radio que parece tener un
‫problema.
‫Dice que no hay ningún argumento dado que corresponda al parámetro formal requerido del dispositivo eléctrico, la cuerda
‫del arco del dispositivo eléctrico.
‫Entonces, ¿qué es este dispositivo eléctrico, ese dispositivo eléctrico cuerda de arco?
‫Bueno, es este de aquí.
‫Es este constructor.
‫Dado que todas las propiedades provienen de la clase base y nuestra clase base contiene un constructor, podemos usar
‫la palabra clave base para pasar nuestra clase base, sus argumentos de constructor, porque estas son las únicas dos propiedades que
‫tenemos y nuestro constructor en la clase secundaria lo hará. tener un cuerpo vacío.
‫Bien, eso es mucha charla.
‫Pero básicamente lo que esto significa es que nuestro constructor de radio no es más complejo que
‫el de base, simplemente podemos seguir adelante y decir base.
‫Y aquí está y Brent.
‫Así y luego no necesitamos un cuerpo para nuestra radio, por lo que este constructor básicamente dirá que está
‫encendido, así como las propiedades de la marca que se pasan al objeto de radio que,
‫cuando se crea, lo pasa al dispositivo eléctrico. constructor, porque básicamente nuestra radio se hereda de un dispositivo eléctrico y,
‫por lo tanto, podemos hacer eso.
‫Entonces podemos pasarlo al dispositivo eléctrico.
‫Y lo que hará es que básicamente establecerá las propiedades y las imprimirá en función de los valores que
‫se pasen.
‫OK, entonces esto es.
‫La parte más complicada, pero el poder aquí es realmente que no tenemos que construir código
‫redundante y, bueno, el trabajo está hecho por nosotros, por lo que realmente nos ahorra mucho tiempo y también al escribir código.
‫En un ejemplo posterior, veremos cómo usar el cuerpo del constructor en la clase secundaria para inicializar
‫sus propias propiedades únicas, para volver a enfatizar rápidamente la clase de radio aquí.
‫Es nuestra clase infantil.
‫Bien, entonces la clase heredada y el dispositivo eléctrico es nuestra clase padre, entonces la clase base.
‫Así que vamos a heredar para que nuestra radio herede de un dispositivo eléctrico, por lo que el hijo hereda del padre, básicamente
‫tus padres tienen cierto ADN y tú tienes el mismo ADN, pero tendrás un poco más,
‫por así decirlo.
‫Así que así es como podrías pensarlo.
‫Está bien.
‫Así que ahora un pequeño desafío para ti.
‫Ajuste la clase de TV para que también herede del dispositivo eléctrico.
‫Tan positivamente.
‫Y prueba eso, por favor.
‫Está bien.
‫Espero que lo hayas probado.
‫Entonces, primero, debemos agregar el dispositivo eléctrico Polan, luego podemos deshacernos del código redundante.
‫Entonces el código repetitivo, porque ya lo tenemos en nuestra clase base.
‫Y esto significa que también podemos usarlo directamente en nuestra clase de TV.
‫Y ahora también podemos ajustar esto aquí, diciendo que vamos a pasar los datos a nuestra clase base.
‫Y, por supuesto, no es necesario que establezcamos eso aquí también.
‫Pero como dije en el ejemplo posterior, veremos cómo podemos seguir usando el cuerpo de manera eficiente.
‫Y eso será básicamente todo.
‫Ahora, podemos seguir adelante con nuestro programa, archivo CSS y verificar nuestro código aquí.
‫Y al verificar nuestro código, me refiero a crear objetos de nuestra radio y probarlos.
‫Así que sigamos adelante.
‫Un objeto de radio.
‫Voy a llamar a este en mi radio y este será un nuevo objeto de radio.
‫Por supuesto, necesito transmitir si está activado.
‫Así que me apagarán al principio y diré que lo hará Sony.
‫Entonces la marca será Sony.
‫Ahora puedo acceder a las propiedades.
‫Puedes ver aquí solo a Eitam, las propiedades de mi propia radio, que es la marca y que
‫está en propiedad y también puedo acceder a sus métodos.
‫Así que enciende, apaga.
‫Escucha, radio.
‫Y luego también puede ver que hay algunos métodos que nunca creamos nosotros mismos que están ahí desde
‫el principio porque cada clase hereda de la clase de objeto y la clase de objeto tiene un método de dos
‫cadenas, así como un código de obtención de tipo get y es igual al método.
‫Bien, entonces estos métodos, están ahí para cada clase que está creando en C Sharp
‫porque básicamente no los vemos, pero internamente hereda de la clase de objeto así, por lo que cada clase hereda de la
‫clase de objeto y por eso tenemos estos métodos diferentes.
‫Pero ahora, en primer lugar, enciéndalo.
‫Así que aquí, enciende.
‫Esto encenderá nuestra radio y ahora podemos escuchar nuestra radio, así que escuche mi radio y escuche la radio.
‫Ahora, ejecutemos esto, y esto nos permitirá escuchar nuestra radio.
‫Entonces ahí estamos escuchando la radio, entonces encendemos la radio, ahora no encienda la radio
‫y escuchemos la radio y dirá radio apagada.
‫Enciéndalo primero.
‫Está bien, ahora.
‫Hagamos lo mismo con nuestro televisor.
‫Sigamos adelante y creemos un objeto de TV.
‫Voy a llamar a esto en mi TV, que será un nuevo objeto de TV, y este también se apagará
‫y será un dispositivo Samsung.
‫Y ahora sigamos adelante y usemos mi televisor, que enciende para encenderlo.
‫Y luego eso se llama el método de ver televisión.
‫Por ejemplo, ahora ejecutemos esto y veremos que ahora nuestro televisor está encendido y lo estamos viendo mientras escuchamos
‫la radio.
‫Así que toda una tarea allí.
‫Pero básicamente nuestro código hace lo que queremos.
‫Así que ahora vemos que llamamos al método de encendido tanto para la radio como para la TV, aunque si
‫miramos la clase de TV, no tiene este método.
‫Entonces no tiene un interruptor.
‫Bueno, encienda o apague el método.
‫La radio tampoco tiene esos métodos, pero eso se debe a que heredan
‫del dispositivo eléctrico, que tiene esos métodos de encendido y apagado para que podamos usarlo.
‫Básicamente, aquí estamos usando el método de la clase base.
‫Entonces aquí, método de clase base.
‫Y aquí estamos usando el método de la clase secundaria.
‫Entonces, el método de encendido proviene del parent plus y el método de ver televisión es del child plus.
‫Así que ahora podemos crear el código que es exclusivo de la clase y no es repetitivo, por así decirlo, directamente en la clase de
‫TV y también en la clase de radio.
‫Pero todo lo que es igual y será relevante para los dispositivos eléctricos en general es algo
‫que podemos crear aquí.
‫Hay mucho más sobre la herencia y, por supuesto, analizaremos todo eso a lo largo de este
‫capítulo.
‫Así que nos vemos en el siguiente video.