В большинстве приведенных выше примеров используется код - и они очень, очень хороши. Мне не нужно добавлять к тому, что они говорят, но ниже приводится простое объяснение, которое использует аналогии, а не код / технические термины.
Простое объяснение - Объяснение с использованием аналогий
Абстрактный метод
Подумайте, Джордж Буш. Он говорит своим солдатам: «Идите воевать в Ирак». И это все. Все, что он указал, - то, что борьба должна быть сделана. Он не указывает , как именно именно это произойдет. Но я имею в виду, вы не можете просто выйти и «бороться»: что это значит точно? я бьюсь с B-52 или моим деррингером? Эти конкретные детали оставлены кому-то еще. Это абстрактный метод.
Виртуальный метод
Дэвид Петреус в армии. Он определил, что означает бой:
- Найди врага
- Нейтрализовать его.
- Выпей пива потом
Проблема в том, что это очень общий метод. Это хороший метод, который работает, но иногда он недостаточно конкретен. Хорошая вещь для Петреуса в том, что его приказы имеют свободу действий и объем - он позволил другим изменить его определение «бой», в соответствии с их конкретными требованиями.
Private Job Bloggs читает приказ Петреуса и получает разрешение на реализацию своей версии боя в соответствии с его конкретными требованиями:
- Найди врага.
- Стреляй ему в голову.
- Иди домой
- Есть пиво.
Нури аль Малики также получает те же приказы от Петреуса. Он также должен бороться. Но он политик, а не человек пехоты. Очевидно, он не может стрелять в своих политических врагов в голову. Поскольку Петреус предоставил ему виртуальный метод, Малики может реализовать свою собственную версию метода боя в соответствии с его конкретными обстоятельствами:
- Найди врага.
- Арестуйте его с некоторыми сфабрикованными обвинениями.
- Домой
- Есть пиво.
Другими словами, виртуальный метод предоставляет типовые инструкции - но это общие инструкции, которые могут быть сделаны более конкретными людьми в иерархии армии, в зависимости от их конкретных обстоятельств.
Разница между двумя
Джордж Буш не доказывает никаких деталей реализации. Это должно быть предоставлено кем-то еще. Это абстрактный метод.
Петреус, с другой стороны, не предоставляет подробности реализации, но он дал разрешение своим подчиненным переопределить его приказы своей собственной версией, если они могут придумать что-то лучшее.
надеюсь, это поможет.