tipos sobreescritura sobrecarga sirve que polimorfismo parametrico para ocurre entre ejemplos ejemplo diferencia cuando polymorphism overloading terminology

polymorphism - sobreescritura - ¿Es el polimorfismo otro término para sobrecargar?



sobrecarga java (4)

La diferencia entre el polimorfismo y la sobrecarga de métodos se encuentra en el momento en que se determina el método real a ejecutar. El motivo de esto es que cuando se sobrecarga un método, como en:

account = new BankAccount(); account = new BankAccount(1000);

El compilador puede indicar qué constructor usar por la firma del método, incluido el número y los tipos de parámetros proporcionados. Esta selección de un método para usar en tiempo de compilación, antes de que el programa se ejecute, se denomina vinculación anticipada. Por otro lado, cuando usamos una llamada de método polimórfico como x.getMeasure (), el método getMeasure () real llamado depende de a qué tipo de objeto se refiere x. Debido a que los objetos no se construyen hasta que el programa se ejecuta, el método llamado se determina en tiempo de ejecución. Por lo tanto, la máquina virtual, no el compilador, selecciona el método apropiado. Esta selección de método se llama vinculación tardía.

¿Es el polimorfismo otro término para sobrecargar?


No, no es.

La sobrecarga se refiere a la creación de un método o un operador con el mismo nombre, pero con diferentes parámetros y, según el idioma, diferentes tipos de devolución.

La anulación se refiere a la reimplementación de un método con la misma firma en una clase derivada y permite el polimorfismo: la decisión de qué implementación de un método sobrescrito se realiza en tiempo de ejecución en función del tipo real del objeto.

class BaseClass { public void DoStuff(Int32 value) { } // Overloading public void DoStuff(String value) { } // Overloading public virtual void DoOtherStuff(String value) { } } class DerivedClass : BaseClass { public override void DoOtherStuff(String value) { } // Overriding }

Ejemplo de uso

BaseClass instance = null; if (condition) { instance = new BaseClass(); } else { instance = new DerivedClass(); } // Using overloads instance.DoStuff(4); instance.DoStuff("four"); // Polymorphism - it depends on the actual type of the object // referenced by the variable ''instance'' if BaseClass.DoOtherStuff() // or DerivedClass.DoOtherStuff() will be called at runtime. instance.DoOtherStuff("other stuff");


No.

Polymorphism es una característica del lenguaje de programación que permite manejar valores de diferentes tipos de datos utilizando una interfaz uniforme. El concepto de polimorfismo paramétrico se aplica tanto a los tipos de datos como a las funciones. Una función que se puede evaluar o aplicar a valores de diferentes tipos se conoce como función polimórfica. Un tipo de datos que puede parecer de tipo generalizado (por ejemplo, una lista con elementos de tipo arbitrario) se denomina tipo de datos polimórficos como el tipo generalizado a partir del cual se realizan dichas especializaciones.

La sobrecarga de métodos es una característica que se encuentra en varios lenguajes de programación como Ada, C #, C ++, D y Java que permite la creación de varios métodos con el mismo nombre que difieren entre sí en términos del tipo de entrada y del tipo de entrada. Salida de la función.

La sobrecarga de métodos no debe confundirse con polimorfismo de tipo o funciones virtuales. En esos, el método correcto es elegido en tiempo de ejecución.

Fuente: Wikipedia.


No; la sobrecarga es crear un método con el mismo nombre con una cantidad diferente de parámetros, o con parámetros que son de otro tipo.

El polimorfismo consiste en cambiar la implementación / funcionalidad de un método específico en varios tipos (todos los cuales tienen el mismo ''tipo base'').

Sobrecarga

public class TestClass { public void DoSomething( int a, int b ) {} public void DoSomething( int a, int b, string x ) {} }

Polimorfismo:

public abstract class Base { public abstract DoSomething(); } public class A : Base { public override DoSomething() { Console.WriteLine("I am A"); } } public class B : Base { public override DoSomething() { Console.WriteLine("I am B"); } }