Виртуальный метод
Автор F@nto4k@ задал вопрос в разделе ВУЗы, Колледжи
Расскажите, для чего вобще нужны Виртуальные методы? и получил лучший ответ
Ответ от P_alex_2000[гуру]
Читай:
Виртуальный метод (виртуальная функция) — в объектно-ориентированном программировании метод (функция) класса, который может быть переопределён в классах-наследниках так, что конкретная реализация метода для вызова будет определяться во время исполнения. Таким образом, программисту необязательно знать точный тип объекта для работы с ним через виртуальные методы: достаточно лишь знать, что объект принадлежит классу или наследнику класса, в котором метод объявлен.
Виртуальные методы — один из важнейших приёмов реализации полиморфизма. Они позволяют создавать общий код, который может работать как с объектами базового класса, так и с объектами любого его класса-наследника. При этом, базовый класс определяет способ работы с объектами и любые его наследники могут предоставлять конкретную реализацию этого способа. В некоторых языках программирования, например в Java, нет понятия виртуального метода, данное понятие следует применять лишь для языков в которых методы родительского класса не могут быть переопределены по умолчанию, а только с помощью некоторых вспомогательных ключевых слов.
Базовый класс может и не предоставлять реализации виртуального метода, а только декларировать его существование. Такие методы без реализации называются «чисто виртуальными» (калька с англ. pure virtual) или абстрактными. Класс, содержащий хотя бы один такой метод, тоже будет абстрактным. Объект такого класса создать нельзя (в некоторых языках допускается, но вызов абстрактного метода приведёт к ошибке). Наследники абстрактного класса должны предоставить реализацию для всех его абстрактных методов, иначе они, в свою очередь, будут абстрактными классами.
Для каждого класса, имеющего хотя бы один виртуальный метод, создаётся таблица виртуальных методов. Каждый объект хранит указатель на таблицу своего класса. Для вызова виртуального метода используется такой механизм: из объекта берётся указатель на соответствующую таблицу виртуальных методов, а из неё, по фиксированному смещению, — указатель на реализацию метода, используемого для данного класса. При использовании множественного наследования или интерфейсов ситуация несколько усложняется за счёт того, что таблица виртуальных методов становится нелинейной.
для воображения
С++ виртуальный метод
Например:
Есть класс Window. Стандартный виндовый какой-нить. Или из какой-нить библиотеки
подробнее...
подскажите чем виртуальная функция отличается от обычной функции
Виртуальные и динамические методы не связаны с другими методами с тем
же именем в классах —
подробнее...
Что такое метод?
По С. Ожегову метод - это способ теоретического исследования или практического осуществления
подробнее...
Delphi: объясните своими словами virtual, abstract и override
Доброго времени суток.
Не вдаваясь в тонкости, можно сказать, что методы классов могут быть
подробнее...
ООП: что такое инкапсуляция, абстракция, полиморфизм и наследование?
инкапсуляция - включение в класс данных (или других классов) с ограничением доступа к ним.
подробнее...
Что такое "интерфейс"? Вот, я читаю - "IDisposable - это такой интерфейс..."... и Что такое IDisposable?
Интерфейс - такое хитрое наследование, которое отражает некий аспект поведения, в отличие от
подробнее...
Подскажите по программированию... Что такое в delphi Спецификаторы virtual, abstract, override, dynamic Спасибо!!!
Мне стыдно за Вас. Если вы изучаете делфи, то в книге все описано. Более того, загуглить Вам
подробнее...
Виртуальные методы C++
Тем что пре вызове указателя с типом базового класса будет вызван соответствующий виртуальный матод
подробнее...
В чем отличие байт кода от машинного?
Байт-кодом называется машинный код для виртуальной
подробнее...
Объектно ориентированное программирование. (ООП)
Так никто нормально и не ответил!
Три признака ООП: инкапсуляция, наследование и полиморфизм.
подробнее...
Подскажите как расшифровывается абривиатура PIC- микроконтроллер?
Название PIC является сокращением от Peripheral Interface Controller, что означает "периферийный
подробнее...
для чего нужны виртуальные функции в C+/+?
Современные программы могут насчитывать десятки тысяч классов, которые связаны между собой
подробнее...
Метод академика Бронникова кто испытывал, реально или нет ?
О Методе Бронникова:
У нормально развитого человека головной мозг работает на 3-5%, у
подробнее...
Метод мартингейла
Метод Мартингейла рассчитан на неграмотных людей не знакомых с математикой или которым просто лень
подробнее...