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

echo выполняется успешно и, таким образом, возвращает 0. Вы должны захватить код возврата перед выполнением другой команды, которая может заглушить $? (до эха).

20
задан Stevoisiak supports Monica 23 August 2017 в 15:44
поделиться

4 ответа

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

Полиморфизм заключается в изменении реализации / функциональности конкретного метода для различных типов (которые все имеют одинаковые значения). base-type ').

Перегрузка:

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");
     }
}
43
ответ дан 29 November 2019 в 22:56
поделиться

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

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

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

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");
1
ответ дан 29 November 2019 в 22:56
поделиться

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

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

Компилятор может указать, какой конструктор использовать сигнатурой метода, включая количество и типы предоставленных параметров. Этот выбор метода, который нужно использовать во время компиляции, до запуска программы, называется ранним связыванием.

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

Компилятор может указать, какой конструктор использовать сигнатурой метода, включая количество и типы предоставленных параметров. Этот выбор метода, который нужно использовать во время компиляции, до запуска программы, называется ранним связыванием.

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

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

10
ответ дан 29 November 2019 в 22:56
поделиться

No.

Polymorphism is a programming language feature that allows values of different data types to be handled using a uniform interface. The concept of parametric polymorphism applies to both data types and functions. A function that can evaluate to or be applied to values of different types is known as a polymorphic function. A data type that can appear to be of a generalized type (e.g., a list with elements of arbitrary type) is designated polymorphic data type like the generalized type from which such specializations are made.

Method overloading is a feature found in various programming languages such as Ada, C#, C++, D and Java that allows the creation of several methods with the same name which differ from each other in terms of the type of the input and the type of the output of the function.

Method overloading should not be confused with type polymorphism or virtual functions. In those, the correct method is chosen at runtime.

Source: Wikipedia.

5
ответ дан 29 November 2019 в 22:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: