Подтвердить что ты не робот

Является ли полиморфизм еще одним термином для перегрузки?

Является ли полиморфизм другим термином для перегрузки?

4b9b3361

Ответ 1

Нет; перегрузка создает метод с тем же именем с другим количеством параметров или с параметрами другого типа.

Полиморфизм - это изменение реализации/функциональности конкретного метода для разных типов (все они имеют один и тот же "базовый тип" ).

Перегрузки:

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

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

полиморфизм:

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");
     }
}

Ответ 2

Разница между полиморфизмом и перегрузкой метода находится в момент определения фактического метода для выполнения. Причина этого в том, что когда метод перегружен, например, в:

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

Компилятор может определить, какой конструктор использовать подписи метода, включая количество и типы предоставленных параметров. Этот выбор метода, который будет использоваться во время компиляции до того, как программа будет выполняться, называется ранним связыванием. С другой стороны, когда мы используем вызов полиморфного метода, такой как x.getMeasure(), вызываемый метод getMeasure() зависит от типа объекта x. Поскольку объекты не создаются до запуска программы, вызов метода определяется во время выполнения. Поэтому виртуальная машина, а не компилятор, выбирает соответствующий метод. Этот метод называется поздним связыванием.

Ответ 3

Нет.

Polymorphism - это функция языка программирования, которая позволяет обрабатывать значения разных типов данных с использованием унифицированного интерфейс. Понятие параметрического полиморфизма применяется как к типам данных, так и к функциям. Функция, которая может оцениваться или применяться к значениям разных типов, известна как полиморфная функция. Тип данных, который может показаться обобщенным типом (например, список с элементами произвольного типа), обозначается как полиморфный тип данных, такой как обобщенный тип, из которого сделаны такие специализации.

Перегрузка метода - это функция, встречающаяся на разных языках программирования, таких как Ada, С#, С++, D и Java что позволяет создавать несколько методов с тем же именем, которые отличаются друг от друга по типу ввода и типу выхода функции.

Перегрузка метода не следует путать с полиморфизмом типа или виртуальными функциями. В них правильный метод выбирается во время выполнения.

Источник: Википедия.

Ответ 4

Нет, это не так.

Перегрузка означает создание метода или оператора с тем же именем, но различные параметры и - в зависимости от языка - разные типы возврата.

Переопределение относится к переопределению метода с одной и той же сигнатурой в производном классе и включает полиморфизм - решение о том, какая реализация переписанного метода для вызова выполняется во время выполнения в зависимости от фактического типа объекта.

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
}

Пример использования

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");