Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

чем отличается перегрузка от переопределения?)

ФермаКактусов Высший разум (211918), закрыт 6 лет назад
Лучший ответ
Black Wolf Мастер (1878) 6 лет назад
Перезагрузка
-----------------------------------------------------------------------------------------------------------------------------------------
Это когда в программе есть 1 метод и у этого метода есть несколько реализаций, которые различаются не названием, а только аргументами и возвращаемым типом значения. Пример:

public static void Main(string Args[])
{
Method(); // 1 перезагрузка метода
Method("Это 2 перезагрузка метода");
Method(1); // Это 3 перезагрузка метода
}

public static void Method() { } // Это сам метод
public static void Method(string msg) { MessageBox.Show(msg); } // Перезагрузка метода
public static int Method(int num) { return num; } // Перезагрузка метода
-----------------------------------------------------------------------------------------------------------------------------------------
Переопределение
-----------------------------------------------------------------------------------------------------------------------------------------
Кратко - это когда в базовом классе определяется метод в ключевым словом virtual - это означает что в базовом классе этот метод может содержать реализацию, но если унаследовать какой-то класс от этого класса, то производный класс может переопределить этот метод с помощью ключевого слова override, то есть изменить его реализацию, но при этом не тронув его оболочку. Пример:

public class BaseClass
{
public virtual void Method()
{
// Реализация в базовом классе
}
}
public class Class : BaseClass // Наследуем класс от базового класса
{
public override void Method() // Переопределение метода через ключевое слово override
{
base.Method(); // Вызывает реализация базвого класса, но можно определить и свою
}
}
Nikolay ShepelevМыслитель (6224) 6 лет назад
Т. е. не виртуальный метод нельзя переопределить?
Black Wolf Мастер (1878) Если метод не помечен как виртуальный или абстрактный, то да его переопределить не лзя. Но между абстрактным методом и виртуальным есть разница в том что виртуальный метод имеет реализацию в базовом классе, а абстрактный метод реализации в базовом классе не имеет, его нужно реализовать в производной классе. Вообще советую загуглить и прочитать всю эту тему с вирт методами и абстрактными
Остальные ответы
Nikolay Shepelev Мыслитель (6224) 6 лет назад
Я так понимаю подразумеваются методы?
Перегрузка - добавление вариантов метода с одним и тем же названием (разное: тип возвращаемого значения, типы параметров).
Переопределение - замена уже существующего метода на другой метод с таким же типов возвращаемого значения и типами параметров.
Похожие вопросы