‫Bienvenido de nuevo al ejemplo del polimorfismo y este video, voy a usar un enfoque diferente en el que, en primer
‫lugar, tienes un pequeño desafío.
‫Debería escribir algún código que le ayude a comprender la herencia un poco más o un poco mejor.
‫Y luego pasaremos a los formularios de votación, formaremos parte de todo este programa.
‫Así que, por favor, intente escribir el código de acuerdo con este desafío aquí.
‫Video tan positivo y probado.
‫Muy bien, espero que lo hayas probado, así que voy a crear una nueva clase de educación
‫y la voy a llamar auto, y esta clase solo será una clase de auto general.
‫Y puede contener o debe contener propiedades.
‫Derecha.
‫Como dije, debería tener una propiedad llamada HP Propp y debería ser un número entero.
‫Y HP va a ser la potencia.
‫Entonces, ¿qué tan poderoso es este auto?
‫Y luego otra propiedad, que es de tipo string y que es el color.
‫Ahora lo que necesito a continuación es tener un constructor.
‫Así que voy a crear un coche público que incorpore la potencia y el color.
‫Y aquí acabo de decir este punto de HP como el de HP y comienzan el color tiene el color.
‫Entonces, este color será nuestro color de propiedad y el HP será el HP de nuestra clase o nuestro objeto que
‫se crea de tipo automóvil.
‫Ahora, el siguiente debería ser el método de detalles.
‫Así que el público no muestra los detalles.
‫Y aquí simplemente escribimos algo en la consola.
‫Entonces S. W. , HP va a ser más HP.
‫Luego tenemos el color, que debería ser algo así como el color.
‫Entonces, por supuesto, podría usar un enfoque diferente donde uso la manipulación de cadenas aquí, pero
‫lo mantendré así.
‫Muy simple.
‫Así que el siguiente es un vacío público y se llama reparación.
‫Y cambiaremos esos dos métodos más adelante.
‫Así que no te preocupes.
‫Pero por ahora, quería que fueran muy simples con el proyecto que hemos usado hasta
‫ahora que dejará más claro qué hace el polimorfismo.
‫Y aquí, justo cuando se reparó el coche.
‫Está bien.
‫Entonces ese es nuestro auto y es nuestra clase base.
‫Y ahora necesitamos las otras dos clases, que es nuestra BMW, clase BMW.
‫Y aquí, como dije, tenemos una propiedad adicional llamada modelo, y este es un modelo de cadena.
‫Ahora, otro aspecto fue la marca, que es un miembro privado.
‫Entonces, marca de cuerdas privada, y se llama BMW.
‫Ahora, a continuación, necesitamos un constructor.
‫Entonces un BMW público.
‫Y antes de hacer eso para crear el constructor, quiero heredar de car.
‫Así que ahora mi BMW heredará del coche.
‫Y lo que necesito aquí es HP, luego
‫el color y el modelo y aquí en Tacoma.
‫Entonces, lo que puedo hacer es configurar el HP en la realidad, incluso puedo seguir adelante y hacer lo mismo con el color, que será
‫el color y el modelo, que es de nuestra propiedad, debería ser el modelo.
‫Así que este aquí, allá, lo uso porque lo quiero para este objeto y lo mismo que puedo hacer
‫aquí y puedo hacer aquí.
‫Entonces, aunque no los he creado aquí, como puede ver, todavía puedo usarlos.
‫Ahora, aquí hay algo que aún no ha visto, que es básico.
‫Entonces puedo usar la palabra clave base aquí y luego simplemente decir, OK, quiero usar HP y el color de mi clase base,
‫entonces ya no necesito esas dos líneas, así que incluso puedo deshacerme de ellas.
‫Como puede ver ahora, la flecha también desaparece.
‫Así que ahora hemos creado un constructor que usa el constructor base de nuestra base, lo
‫que significa nuestra clase base, que es nuestro auto, solo vamos a usar este constructor y solo agregará el modelo.
‫Así que ahora tenemos un constructor muy corto que hace todo el trabajo durante todo el trabajo.
‫Así que ahora lo que necesito a continuación es un espectáculo de detalles vacío, como dije.
‫Y aquí solo quiero mostrar los detalles y solo voy a copiar el método de aquí o la entrada
‫del método.
‫Y aquí será la marca primero.
‫Así que brand plus.
‫Marca más HP, por lo que solo iba a mostrar algunos detalles adicionales, y aquí, como puede ver los detalles, los detalles heredados de la exhibición de
‫autos con miembros de Hydes usan la nueva palabra clave si se pretendía ocultar.
‫Y eso es algo que vamos a cubrir en el próximo video.
‫Pero por ahora, creemos también el método de reparación, reparación de vacío público.
‫Y aquí debería decir algo como el BMW
‫y aquí fue reparado.
‫Entonces, ¿qué es este cero que tengo allí?
‫Bueno, ese es el modelo.
‫Entonces solo quiero saber el modelo del auto.
‫Y solo voy a decir, digamos BMW Zevi como EFORE o y tres o cinco fueron reparados.
‫Entonces eso es lo que debería hacer esto.
‫Y ahora necesito otra, otra clase, que es bastante similar a la que tenemos aquí.
‫Así que voy a crear una nueva clase y la voy a llamar Audy.
‫Y para simplificar, simplemente voy a copiar la mayoría de las cosas aquí, en realidad toda la clase, porque va a
‫ser muy similar.
‫Lo que es diferente aquí es que es un Audi y que tenemos la autoridad como constructor y, por
‫supuesto, necesita heredar del automóvil.
‫Así que ahora eso está hecho y ahora viene la parte del polimorfismo.
‫Entonces tenemos un Audi, que es de tipo automóvil.
‫Tenemos un BMW, que también es un tipo de automóvil, y tenemos esta clase base, que es un automóvil.
‫Y ahora podemos seguir adelante y crear múltiples objetos de eso.
‫Ahora, tendrá mucho más sentido tan pronto como lleguemos allí.
‫Así que sigamos adelante y creemos una nueva variable llamada coches, que será una nueva lista de coches.
‫Y aunque esta es una lista de autos, de la clase de autos, podemos crear todo esto y BMW está aquí.
‫Entonces solo puede crear, digamos, un Audi, que es azul y es un A4.
‫Luego tenemos un nuevo BMW, que es, digamos, 250 HP y digamos que es un auto rojo y es un tres.
‫Entonces, esa es una parte del polimorfismo que puede usar las subclases en lugar de la clase base o las clases de conducción
‫en lugar de la clase base.
‫Uno trabajando, por ejemplo, con las listas o en general y por general, verás a qué me refiero.
‫Entonces, lo que voy a hacer es ejecutar un para cada ciclo, que va a verificar todos mis autos en la lista de mi
‫auto, y solo va a escribir algo como reparación de autos o va a llamar a un método de reparación
‫.
‫Muy bien, llamemos a eso o ejecutemos eso.
‫Pero antes de hacer eso, necesitamos consolar a Don read key.
‫Porque de lo contrario, nuestro programa simplemente se cerrará.
‫Así que ahí estás.
‫Se reparó el coche, se reparó el coche.
‫Entonces ahora está llamando al método del automóvil aquí, que solo este automóvil de aquí fue reparado.
‫Por lo tanto, no llama a este método de reparación ni tampoco a este método de reparación, que fue el BMW que
‫se reparó o aquí.
‫En realidad, es el lugar para el que ya debería estar el audio, aunque fue reparado.
‫Entonces, ¿por qué llama al método de reparación de nuestro coche y no al de BMW?
‫Y el audio tiene que ver con dos cosas.
‫Uno de ellos es que tenemos esta reparación de voz, que no es virtual.
‫Entonces, si lo hacemos una reparación de vacío virtual, lo que ahora podemos hacer es, por ejemplo, aquí podemos anularlo para que
‫podamos anular el método de reparación.
‫Lo que hará es si ejecutamos el código nuevamente.
‫Veremos que se reparó el auto, ese es nuestro Audy, el primero, y luego se reparó el BMW M3 y ese
‫es el segundo.
‫Y eso se debe a que nuestra clase BMW aquí ha anulado el método de reparación, por lo que podemos simplemente tomar este método,
‫hacerlo virtual y eso nos permite anularlo en las clases de manejo.
‫Y eso es lo que hemos hecho aquí.
‫Así que ahora que son los dos aspectos del polimorfismo, entonces el polimorfismo en el trabajo, uno, un Audi y VW,
‫Porche, cualquier clase diferente que desee tener puede usarse donde se espere un automóvil.
‫Entonces, siempre que estén heredando de esta clase aquí, de nuestra clase de automóvil aquí, esta, simplemente podemos usarla en su
‫lugar.
‫Y luego, el segundo aspecto del polimorfismo es que el método virtual puede invocarse en cada una de las clases de
‫conducción, no en la mejor clase.
‫Eso es algo que hemos hecho con BMW y ahora podemos hacer lo mismo con nuestro Audi aquí.
‫Así que también voy a hacer que eso sea una anulación.
‫Reemplazar la reparación del voto.
‫Ahora ejecutémoslo de nuevo.
‫Y ahora ambos deberían mostrar sus marcas y sus modelos.
‫Entonces vemos que el Audi, un cuatro y un BMW y tres fueron reparados.
‫Sin embargo, hay una cosa más sobre el polimorfismo.
‫Entonces, si desea ocultar los mejores miembros de la clase con nuevos miembros, puede usar la nueva palabra clave.
‫Entonces, digamos que tenemos este método de mostrar detalles de Voit en nuestro auto de clase, que es solo un vacío.
‫No es un vacío virtual.
‫Y ahora, si quisiera anular eso, no anule en el sentido de que lo hemos hecho bien aquí con
‫la anulación.
‫Pero en realidad quiero usar este método cada vez que estoy usando un BMW y no en el sentido de anular el
‫anterior, sino simplemente ocultar el del automóvil y usar los detalles del espectáculo.
‫Desde entonces, puedo usar la nueva palabra clave.
‫Entonces, simplemente dirá, OK, los detalles de este programa tienen prioridad sobre el automóvil, mostrar detalles.
‫Por lo tanto, no lo sobrescribe, sino que lo vuelve a priorizar.
‫Entonces, ¿cómo debo mostrar este método detallado para mostrar o usar para mostrar el método?
‫Bueno, creemos un nuevo BMW B y W esos tres, que será un nuevo automóvil BMW con doscientos caballos de
‫fuerza.
‫Hagámoslo negro y luego es un modelo Z tres.
‫Y luego creemos también un Audi, Audi, un tres.
‫Va a ser una nueva fiesta con, digamos, 100 caballos de fuerza y esta es verde, un color muy extraño para un
‫auto.
‫Y luego tienes un modelo de tres aquí.
‫Ahora, ejecutemos el método BMW y mostremos detalles aquí.
‫Y lo mismo para el Audi Audi, un espectáculo de tres dedos, detalles.
‫Así que ejecutemos eso.
‫Y ves HP, doscientos colores negros, HP, cien colores verdes.
‫Entonces, como puede ver, está llamando al método de detalles de la exhibición de autos y no está llamando al de BMW.
‫Y eso se debe a que lo hemos creado como un automóvil.
‫Pero es un nuevo BMW como automóvil.
‫Entonces, si hacemos lo mismo ahora, sigamos adelante y creemos un b m w cinco, que no
‫será un automóvil, pero esta vez es un BMW nuevo b m w.
‫Y este, digamos, tiene trescientos treinta caballos de fuerza.
‫Es blanco y es una M cinco.
‫Así que ahora, si llamo a esto V.
‫¿Podrías mostrar el método de cinco puntos y detalles? Me mostrará la marca también para que seamos
‫de la marca BMW, HP 330, color blanco y los primeros.
‫Entonces esos de aquí, también tenían que mostrar el método de detalle, pero usan el de auto y ahora el
‫de BMW usa el de BMW.
‫Entonces, aunque dijimos nuevo BMW, todavía usamos la clase de automóvil para crear un objeto de automóvil de lo que
‫es.
‫Internamente, un BMW, pero llamamos a los métodos del automóvil y no a los métodos de BMW, solo si seguimos adelante
‫y lo creamos como un BMW, llamamos al nuevo método.
‫Así que este nuevo aquí simplemente dice, OK, si creas un objeto mío, entonces adelante y escríbelo como nuevo.
‫Si no lo hace, siga adelante y simplemente use el método de los automóviles o de la clase de automóvil.
‫La clase base, más o menos.
‫Pero, ¿qué pasa si quiero llamar al método show details de mi clase de bajo en mi objeto BMW, entonces puedo hacer
‫lo siguiente?
‫Puedo seguir adelante y crear un automóvil, al que llamaré automóvil B, será un BMW, M5, pero
‫será un automóvil.
‫Entonces, aquí estoy usando la fundición para lanzar mi BMW en un automóvil y ahora puedo seguir adelante y usar el automóvil.
‫B que muestran detalles de mi BMW M5.
‫O de mi coche, de modo que volvamos a ser tres sobre 30 color blanco.
‫Así que ese es nuestro BMW, M5 aquí.
‫Entonces, ¿por qué usaría este enfoque de ocultar y usar esta nueva palabra clave aquí en sus miembros?
‫Bueno, lo usaría si desea que su miembro derivado tenga el mismo nombre
‫que un miembro en una clase base, pero no desea participar en una invocación virtual.
‫Entonces es cuando usas esta nueva palabra clave que hemos visto aquí.
‫De lo contrario, si desea anularlo, simplemente puede usar este enfoque de anulación aquí o simplemente anular
‫la palabra clave en su declaración del método.
‫Está bien.
‫Entonces eso es bastante.
‫Polimorfismo.
‫En el siguiente video, veremos cómo podemos prevenir eso.
‫Entonces, si no quiere eso, un método puede ser anulado.
‫Hay una forma de hacer eso en nuestra clase base.
‫Así que nos vemos en el siguiente video.