Виртуальные методы

11 Фев 2018, Автор: admin

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

Понятие

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

Программная сторона вопроса

Популярные языки программирования, такие как C++, C#, требуют явно указывать, что данный метод является виртуальным. Такие языки, как Java и Python, определяют все методы по умолчанию, как виртуальные, но только те методы, для которых это возможно. Стоит отметить, что популярность использования языка программирования не зависит от определенности в нем методов.

Декларирование класса

Так же стоит упомянуть, что базовый класс может и не предоставлять реализации виртуального метода, а только декларировать его существование. Такие методы без реализации называются «чистыми виртуальными» или абстрактными. При этом, класс, содержащий хотя бы один такой метод, тоже будет абстрактным.

Таблицы классов

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