Fredy y el team Platzi
JavaScript Orientado a Objetos
JavaScript: orientado a objetos, basado en prototipos
Qué es programación orientada a objetos
Bonus: fútbol y programación orientada a objetos
Objetos, clases y prototipos
Qué es un objeto en JavaScript
Objetos literales y prototipos en JavaScript
Clases en JavaScript
Ventajas de la programación orientada a objetos
Playgrounds: Manejo de clases
Pilares de la POO: abstracción y encapsulamiento
Qué es abstracción
Abstracción en JavaScript
Qué es encapsulamiento
Getters y setters en JavaScript
Módulos de ECMAScript 6
Playgrounds: Controlar accesos con get y set
Pilares de la POO: herencia y polimorfismo
Qué es herencia
Herencia en JavaScript
Qué es polimorfismo
Polimorfismo en JavaScript
Playgrounds: Sobrescribir métodos heredados
Próximos pasos
Toma el Curso Intermedio de Programación Orientada a Objetos en JavaScript
You don't have access to this class
Keep learning! Join and start boosting your career
Polymorphism is one of the fundamental pillars of object-oriented programming. This concept advances the principle of inheritance by allowing subclasses to modify or even override the behavior of the methods and attributes they inherit from a superclass. Even if a subclass inherits the methods and attributes of a parent class, polymorphism allows the behavior to be altered.
To illustrate how polymorphism can be useful, let's consider a scenario with different classes of students: "free", "basic" and "expert". They all inherit from a superclass called Student
. A common function for all these subclasses could be to publish comments.
class Student { publishComment() { return "This comment was published by a student."; } }}
However, if we create a new type of student, say "student teachers" or Teacher-Students
, these could have a method of posting comments that highlights the authority of the comment as being made by a teacher.
class TeacherStudent extends Student { publishComment() { return "This is the teacher's official response."; } }}
Teacher-Students
could share the same attributes as other students, but polymorphism allows them to change the implementation of the publishComment
method.
In some object-oriented programming languages there are several types of polymorphism: overloading, parametric and inclusion.
Overloading and parametric polymorphism allows defining several methods with the same name within a class, but varying the type and number of parameters they receive. This is common in languages like Java, where you can have methods like the following:
public void metodoEjemplo(int number) { // Code to handle an integer}
public void metodoEjemplo(String text) { // Code to handle a text}
Thus, the same method can act differently depending on the parameters it receives.
In JavaScript, the polymorphism we can use is inclusion polymorphism. This allows us to override methods or attributes inherited from a superclass:
{class MyClassBase { method() { console.log('Method of the base class.'); }}
class MySubClass extends MyClassBase { method() { console.log('Method overwritten in the subclass.'); } }}
In this example, even if we call metodo()
from an instance of MySubClass
, we will get the implementation of the overwritten method instead of the original one from the base class.
With these practices, you can write cleaner, more modular and maintainable code. Continue learning more about object-oriented programming to get the most out of polymorphism and other fundamental concepts.
Contributions 25
Questions 4
Fredy y el team Platzi
¿QUÉ ES EL POLIMORFISMO?
Es como la herencia reloaded. Es como ‘La Herencia 2.0’. Es un pilar de la OOP. Lo que es importante es lo que se puede hacer con este: Permite a nuestras subclases cambiar o anular los comportamientos de los métodos y atributos del prototipo madre, de la clase madre. Aunque herede las propiedades, el polimorfismo permite cambiar su comportamiento.
·
Tipos:
Un ejemplo claro del Polimorfismo es el de la imagen, todas las figuras heredan de la super-Clase Figura.
Todas ellas pueden Dibujarse, pero cada una lo hará diferente dependiendo de la figura que sea.
Nota: la palabra elegante para la capacidad de múltiples tipos de objetos de implementar la misma funcionalidad es polimorfismo. Por si acaso te preguntabas.
Resumen polimorfismo
El polimorfismo en JavaScript les permite a nuestras subclases cambiar o anular el comportamiento de los métodos o atributos que anidaron de una super clase.
Existen estos tipos de polimorfismo según sea el lenguaje de programación: sobrecarga paramétrico e inclusión.
En JavaScript solo podemos utilizar el polimorfismo de inclusión, nos va a permitir sobrescribir que método o atributo heredado vamos a cambiar de la superclase.
Investigué un poco sobre los distintos tipos de polimorfismo:
Les dejo la fuente.
Aquí lo que obtuve de la fuente:
Sobrecarga
Ocurre cuando las existen funciones con el mismo nombre y con funcionalidad similar, pero que están es clases que son independientes unas de otras.
Por ejemplo si tuvieramos la clases complex, image, link; y todas tuvieran la función display() para que impriman en pantalla. No hay necesidad de saber qué vamos a imprimir, ya que solo queremos ver un resultado en pantalla.
Con el polimorfismo de sobrecarga podemos definir operadores que tengan variación en su comportamiento, en función de los parámetros con los que trabajen.
Por ejemplo: si a la función display usa el operador +, y le pasamos dos numeros como parametros, queremos que sume esos números y muestre el resultado en pantalla; sin embargo, si le pasamos dos cadenas queremos que concatene esas cadenas y muestre el resultado en pantalla.
Paramétro
El polimorfismo paramétrico va a aplicar un método u otro en función de los paramétros que se le pasen.
Por ejemplo: si tuvieramos varios métodos de suma: int addition, float addition, char addition. Respectivamente suma de números enteros, flotantes y carácteres. Si nosostros pasamos parámetros que sean enteros, flotantes o carácteres, se aplicará un método correspondiente.
Inclusión
Se puede llamar un método de objeto sin tener que conocer su tipo. Nos permite no tomar en cuenta detalles de las clases especializadas de una familia de objetos.
📌 **RESUMEN:** El polimorfismo permite a nuestras subclases cambiar o anular los comportamientos de los métodos y atributos de la superclase o prototipo madre
Polimorfismo: Muchas formas. Poli = muchas, morfismo = formas. NO es Poliformismo
Es construir métodos con el mismo nombre pero con comportamiento diferente.
El polimorfismo significa “Muchas formas”, en este caso significa “Muchos comportamientos”. Comportamientos de los métodos que se heredan. Lo que hace JS (por ahora) es simplemente sobrescribir esos métodos para que cada “Sub-prototipo” pueda tener distintos comportamientos o incluso distintas validaciones
El polimorfismo sucede en las subclases cuando podemos cambiar el comportamiento de algún método que están heredando, nos permite cambiar el comportamiento.
Tenemos diferentes tipos de polimorfismo, algunos son:
📌 El polimorfismo se refiere a que las clases que heredan atributos y métodos de una clase madre, pueden comportarse de muchas formas diferentes. ¿Cómo cambian su comportamiento? Cambiando o anulando atributos y métodos de la clase madre.
Es como la herencia 2.0. Permite cambiar e incluso anular los métodos y atributos de una super clase.
Tipos de polimorfismo:
Por lo general diremos que existen 3 tipos de polimorfismo:
Sobrecarga: El más conocido y se aplica cuando existen funciones con el mismo nombre en clases que son completamente independientes una de la otra.
Paramétrico: Existen funciones con el mismo nombre pero se usan diferentes parámetros (nombre o tipo). Se selecciona el método dependiendo del tipo de datos que se envíe.
Inclusión: Es cuando se puede llamar a un método sin tener que conocer su tipo, así no se toma en cuenta los detalles de las clases especializadas, utilizando una interfaz común.
Veremos que el polimorfismo y la herencia son dos conceptos estrechamente ligados. Conseguimos implementar polimorfismo en jerarquías de clasificación que se dan a través de la herencia. Por ejemplo, tenemos una clase vehículo y de ella dependen varias clases hijas como coche, moto, autobús, etc.
Otro punto de vista del poliformismo, o que diga: polimorfismo
Definición: Es la capacidad que tienen ciertos lenguajes para hacer que, al enviar el mismo mensaje (o, en otras palabras, invocar al mismo método) desde distintos objetos, cada uno de esos objetos pueda responder a ese mensaje (o a esa invocación) de forma distinta.
Tipos de polimorfismo:
Sobrecarga : El más conocido y se aplica cuando existen funciones con el mismo nombre en clases que son completamente independientes una de la otra.
Paramétrico : Existen funciones con el mismo nombre pero se usan diferentes parámetros (nombre o tipo).
**Inclusión ** (usaremos en JS) : La habilidad para redefinir por completo el método de una superclase en una subclase es lo que se conoce como polimorfismo de inclusión (o redefinición).
Poli >> multiple
Morfo >> forma
Polimorfismo >> capacidad de tomar varias formas
En esta caso especifico comportarse diferente teniendo el mismo nombre
Bueno por ahora solo guardare en mi cabecita que hay tres tipos de polimorfismo y teniendo muy en cuenta que es el polimorfismo y que en JavaScript solo se puede aplicar el tipo de inclusión
Polimorfismo es como cuando piensas que ella va a caer el los mismos trucos que empleaste con tu ex, pero ella reacciona y te manda a la friendzone.
No hay nada mejor que aprender con metaforas, historias y sentidos. Eso lo aprendi en el libro “A mind for numbers de Barbara Oakley”
Esto es el polimorfismo.
Tengo de juguete: un leon, un auto y un pandereta.
Todos son: Objetos diferentes, con Comportamientos diferentes. El leon, hace un sonido diferente a una pandereta y un auto. Por que?
El boton que los hace hacer el sonido, se llama igual = “Sonar”, y en todos se llama sonar porque LO HEREDAN de un clase padre llamada JUGUETES. Una vez que sea “Sonar” utilizado, los 3 sonaran de manera diferente. Gracias a que la clave del polimorfismo es que heredas el metodo ”sonar”, pero podes editar lo que sucede dentro de este.
Eso es el POLIMORFISMO. Poseer un boton del mismo nombre(Por heremcia), que dependiendo el objeto, hara un comportamiento diferente(Gracias a el polimorfismo).
El polimorfismo se refiere a la propiedad por la que es posible enviar mensajes sintácticamente iguales a objetos de tipos distintos. El único requisito que deben cumplir los objetos que se utilizan de manera polimórfica es saber responder al mensaje que se les envía.
Tipos de polimorfismo:
POLIMORFISMO
La palabra polimorfismo significa «múltiples formas» y en programación orientada a objetos puede tener varios significados, por ejemplo la habilidad que tiene un método dentro de un objeto con interactuar con diferentes objetos de diferentes clases de la misma forma pero con resultados diferentes. Esto se logra cuando creamos clases que tienen la misma interfaz (es decir los mismos métodos públicos) pero se comportan de manera diferente.
Want to see more contributions, questions and answers from the community?