Java

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

Сергей Щукин
Сергей Щукин
90 096
Перезагрузка
-----------------------------------------------------------------------------------------------------------------------------------------
Это когда в программе есть 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(); // Вызывает реализация базвого класса, но можно определить и свою
}
}
Денис Кулашкин
Денис Кулашкин
1 878
Лучший ответ
Александр Мартынюк Т. е. не виртуальный метод нельзя переопределить?
Я так понимаю подразумеваются методы?
Перегрузка - добавление вариантов метода с одним и тем же названием (разное: тип возвращаемого значения, типы параметров).
Переопределение - замена уже существующего метода на другой метод с таким же типов возвращаемого значения и типами параметров.