{"id":353515,"date":"2024-08-27T14:07:24","date_gmt":"2024-08-27T14:07:24","guid":{"rendered":"https:\/\/www.ninjaone.com\/it-hub\/%content_hub_category%\/polimorfismo\/"},"modified":"2024-11-14T15:37:11","modified_gmt":"2024-11-14T15:37:11","slug":"polimorfismo","status":"publish","type":"content_hub","link":"https:\/\/www.ninjaone.com\/es\/it-hub\/it-service-management\/polimorfismo\/","title":{"rendered":"\u00bfQu\u00e9 es el polimorfismo?"},"content":{"rendered":"<p>En la programaci\u00f3n orientada a objetos (POO), el polimorfismo se refiere a la capacidad de un objeto para adoptar m\u00e1s de una forma. El t\u00e9rmino procede de las palabras griegas \u00abpoli\u00bb (que significa \u00abmuchos\u00bb) y \u00abmorf\u00bb (que significa \u00abformas\u00bb) y muestra c\u00f3mo los objetos polim\u00f3rficos pueden ejecutar distintas operaciones, seg\u00fan el contexto.<\/p>\n<p>La programaci\u00f3n orientada a objetos es un enfoque de programaci\u00f3n centrado en el uso de objetos. Esencialmente, los objetos se definen por la forma en que se comportan, tambi\u00e9n conocida como m\u00e9todo y sus atributos. Con la programaci\u00f3n orientada a objetos, los programadores definen y diferencian a\u00fan m\u00e1s los objetos creando clases de objetos. Java tambi\u00e9n permite la creaci\u00f3n de una subclase, que es una clase de nueva creaci\u00f3n que hereda atributos de una clase ya establecida. La clase original de la que se copiaron estos atributos se denominan superclases.<\/p>\n<h2>\u00bfCu\u00e1les son los tipos de polimorfismo en Java?<\/h2>\n<p>Se trata de uno de los conceptos b\u00e1sicos de la programaci\u00f3n orientada a objetos. Permite a los programadores escribir c\u00f3digo coherente que puede comportarse de forma diferente en funci\u00f3n de la superclase o subclase con la que interact\u00faa el m\u00e9todo u objeto.<\/p>\n<p>Existen dos tipos en Java:<\/p>\n<ol>\n<li aria-level=\"1\">\n<h3>Polimorfismo en tiempo de compilaci\u00f3n<\/h3>\n<\/li>\n<\/ol>\n<p>Tambi\u00e9n conocido como polimorfismo est\u00e1tico, este tipo de polimorfismo se resuelve durante la compilaci\u00f3n del c\u00f3digo cuando \u00e9ste se convierte en instrucci\u00f3n de m\u00e1quina. Normalmente se consigue mediante sobrecarga cuando varios m\u00e9todos de la misma clase tienen el mismo nombre pero par\u00e1metros diferentes. Esto permite a una clase realizar una operaci\u00f3n similar de forma diferente, dependiendo de la entrada. El polimorfismo en tiempo de compilaci\u00f3n ofrece tiempos de ejecuci\u00f3n m\u00e1s r\u00e1pidos y reutilizaci\u00f3n porque el m\u00e9todo que se va a ejecutar se determina en tiempo de compilaci\u00f3n. Sin embargo, carece de flexibilidad, ya que todas las posibles instrucciones de m\u00e9todo deben conocerse en tiempo de compilaci\u00f3n, lo que la hace menos adaptable a los cambios.<\/p>\n<ol>\n<li aria-level=\"1\">\n<h3>Polimorfismo en tiempo de ejecuci\u00f3n<\/h3>\n<\/li>\n<\/ol>\n<p>El polimorfismo en tiempo de ejecuci\u00f3n, tambi\u00e9n conocido como enlace din\u00e1mico o enlace tard\u00edo, es un tipo de polimorfismo que se resuelve durante la ejecuci\u00f3n del programa. Este tipo de polimorfismo se consigue normalmente mediante la sobreescritura de m\u00e9todos, en la que una subclase proporciona una implementaci\u00f3n espec\u00edfica de un m\u00e9todo que ya est\u00e1 definido en su superclase. El m\u00e9todo a ejecutar se determina en tiempo de ejecuci\u00f3n, lo que permite una mayor adaptabilidad y flexibilidad en el c\u00f3digo. Sin embargo, esto conduce a tiempos de ejecuci\u00f3n m\u00e1s lentos que el polimorfismo en tiempo de compilaci\u00f3n debido a que la m\u00e1quina determina el m\u00e9todo en tiempo de ejecuci\u00f3n.<\/p>\n<h2>\u00bfQu\u00e9 ventajas tiene?<\/h2>\n<ul>\n<li aria-level=\"1\">\n<h3>Reutilizaci\u00f3n<\/h3>\n<\/li>\n<\/ul>\n<p>Permite dise\u00f1ar c\u00f3digo m\u00e1s flexible y reutilizable. Permite a los programadores crear c\u00f3digo que funcionar\u00e1 con objetos independientemente de la clase espec\u00edfica de cada objeto.<\/p>\n<ul>\n<li aria-level=\"1\">\n<h3>Flexibilidad<\/h3>\n<\/li>\n<\/ul>\n<p>En lugar de tener que modificar los c\u00f3digos, el polimorfismo permite a los programadores ampliar la funcionalidad f\u00e1cilmente.<\/p>\n<ul>\n<li aria-level=\"1\">\n<h3>C\u00f3digo simplificado<\/h3>\n<\/li>\n<\/ul>\n<p>Permite a los programadores crear c\u00f3digo m\u00e1s conciso. Los c\u00f3digos polim\u00f3rficos son sencillos porque mantienen la instrucci\u00f3n inicial exacta pero tienen la capacidad de cambiarse a s\u00ed mismos.<\/p>\n<h2>\u00bfQu\u00e9 inconvenientes tiene?<\/h2>\n<ul>\n<li aria-level=\"1\">\n<h3>Problemas de rendimiento<\/h3>\n<\/li>\n<\/ul>\n<p>Una m\u00e1quina puede tener dificultades para ejecutar un c\u00f3digo polim\u00f3rfico, especialmente cuando se vuelve demasiado complejo.<\/p>\n<ul>\n<li aria-level=\"1\">\n<h3>Dif\u00edcil de aplicar<\/h3>\n<\/li>\n<\/ul>\n<p>Los c\u00f3digos polim\u00f3rficos son m\u00e1s dif\u00edciles de implementar debido a la cantidad de variables.<\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>Como uno de los elementos centrales de la programaci\u00f3n orientada a objetos, el polimorfismo ofrece a los programadores una forma de crear c\u00f3digo flexible que puede ampliarse o adaptarse f\u00e1cilmente. El polimorfismo simplifica la interacci\u00f3n entre m\u00e9todos y clases para garantizar un c\u00f3digo m\u00e1s coherente, flexible y reutilizable. Comprender y aplicar correctamente el polimorfismo puede mejorar <a href=\"https:\/\/www.ninjaone.com\/efficiency\/\">la eficacia<\/a> de la <a href=\"https:\/\/www.ninjaone.com\/blog\/high-code-vs-low-code-vs-no-code\/\">codificaci\u00f3n<\/a> y la programaci\u00f3n.<\/p>\n","protected":false},"author":151,"featured_media":0,"parent":0,"template":"","meta":{"_acf_changed":false,"_relevanssi_hide_post":"","_relevanssi_hide_content":"","_relevanssi_pin_for_all":"","_relevanssi_pin_keywords":"","_relevanssi_unpin_keywords":"","_relevanssi_related_keywords":"","_relevanssi_related_include_ids":"","_relevanssi_related_exclude_ids":"","_relevanssi_related_no_append":"","_relevanssi_related_not_related":"","_relevanssi_related_posts":"","_relevanssi_noindex_reason":"","_lmt_disableupdate":"no","_lmt_disable":""},"hub_categories":[4190],"class_list":["post-353515","content_hub","type-content_hub","status-publish","hentry","content_hub_category-it-service-management"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/content_hub\/353515","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/content_hub"}],"about":[{"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/types\/content_hub"}],"author":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/users\/151"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/media?parent=353515"}],"wp:term":[{"taxonomy":"content_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/hub_categories?post=353515"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}