Я хочу поделиться примером, который имел для меня большой смысл, когда я учился:
Это просто пример, который не включает виртуальный метод или базовый класс. Просто, чтобы дать подсказку относительно основной идеи.
Допустим, есть машина для мойки автомобилей, в которой есть функция, называемая «Мойка», и она принимает автомобиль в качестве типа.
Получает данные о машине и моет машину.
public void Wash(Car anyCar){
//wash the car
}
Перегрузим функцию Wash ()
Перегрузка:
public void Wash(Truck anyTruck){
//wash the Truck
}
Раньше функция стирки использовалась только для мойки автомобилей, но теперь она перегружена и для мойки грузовиков.
- Если предоставленный объект ввода - Car, он выполнит Wash (Car anyCar)
- Если предоставленный входной объект - Грузовик, то он выполнится
Wash (Truck anyTruck)
Давайте переопределим функцию Wash ()
Перекрытие:
public override void Wash(Car anyCar){
//check if the car has already cleaned
if(anyCar.Clean){
//wax the car
}
else{
//wash the car
//dry the car
//wax the car
}
}
Функция стирки теперь имеет условие, чтобы проверить, чиста ли машина и не нуждается ли в повторной стирке.
Если машина чистая, то просто нанесите ее воском.
Если не чистить, то сначала помойте машину, затем высушите, а затем воск
он
.
Таким образом, функциональность была переопределена добавлением новой функциональности или выполнением чего-то совершенно другого.