Видео: Разница между виртуальным и абстрактным
2024 Автор: Mildred Bawerman | [email protected]. Последнее изменение: 2023-12-16 08:42
Виртуальный против абстрактного
Виртуальный и абстрактный - два ключевых слова, используемых в большинстве объектно-ориентированных языков программирования, таких как Java и C #. Хотя есть небольшие различия в том, что это означает на разных языках, ключевые слова Virtual и Abstract дают ощущение частичной реализации сущностей, к которым они присоединяются.
абстрактный
Как правило, абстрактные классы, также известные как абстрактные базовые классы (ABC), не могут быть созданы (экземпляр этого класса не может быть создан). Итак, абстрактные классы имеют смысл иметь только в том случае, если язык программирования поддерживает наследование (возможность создавать подклассы из расширения класса). Абстрактные классы обычно представляют абстрактное понятие или сущность с частичной реализацией или без нее. Следовательно, абстрактные классы действуют как родительские классы, от которых производятся дочерние классы, так что дочерний класс будет разделять неполные функции родительского класса, а для их завершения можно добавить функциональные возможности. Абстрактные классы могут содержать абстрактные методы. Подклассы, расширяющие абстрактный класс, могут реализовывать эти (унаследованные) абстрактные методы. Если дочерний класс реализует все такие абстрактные методы, это конкретный класс. Но если этого не произойдет,дочерний класс также становится абстрактным классом. Все это означает, что, когда программист назначает класс абстрактным, он говорит, что класс будет неполным и в нем будут элементы, которые должны быть завершены наследующими подклассами. Это хороший способ заключить контракт между двумя программистами, который упрощает задачи при разработке программного обеспечения. Программист, который пишет код для наследования, должен точно следовать определениям методов (но, конечно, может иметь свою собственную реализацию). В Java и C # абстрактные классы и методы объявляются с использованием ключевого слова Abstract. Это хороший способ заключить контракт между двумя программистами, который упрощает задачи при разработке программного обеспечения. Программист, который пишет код для наследования, должен точно следовать определениям методов (но, конечно, может иметь свою собственную реализацию). В Java и C # абстрактные классы и методы объявляются с использованием ключевого слова Abstract. Это хороший способ заключить контракт между двумя программистами, который упрощает задачи при разработке программного обеспечения. Программист, который пишет код для наследования, должен точно следовать определениям методов (но, конечно, может иметь свою собственную реализацию). В Java и C # абстрактные классы и методы объявляются с использованием ключевого слова Abstract.
Виртуальный
Виртуальные методы / функции предоставляют возможность при желании переопределить его поведение наследующим классом (используя функцию с той же сигнатурой). Концепция виртуальной функции важна в следующем сценарии. Предположим, что класс является производным от дочернего класса, тогда всякий раз, когда используется объект производного класса, он может ссылаться на объект базового класса или производного класса. Но поведение вызова метода может быть неоднозначным, если методы базового класса переопределены. Итак, чтобы устранить эту двусмысленность, используется ключевое слово Virtual. Если метод помечен как виртуальный, то вызывается функция производного класса (если есть) или вызывается функция базового класса. Например, в C ++ ключевое слово Virtual используется именно для этой цели. В C # ключевое слово Virtual используется аналогичным образом, но, кроме того,ключевое слово override следует использовать для изменения всех переопределенных методов. Но в Java нет явного ключевого слова Virtual. Все нестатические методы считаются виртуальными. Виртуальные функции без тела называются чистыми виртуальными функциями. В Java и C # абстрактные методы фактически являются чистыми виртуальными.
Разница между виртуальным и абстрактным
Хотя Abstract и Virtual - это два ключевых слова / понятия, которые придают значение неполной реализации связанных с ним сущностей, у них есть свои различия. Абстрактные методы (которые должны быть определены внутри абстрактных классов) вообще не имеют реализации, тогда как виртуальные методы могут иметь реализацию. Если абстрактные методы расширяются конкретным классом, все унаследованные абстрактные методы должны быть реализованы, в то время как унаследованные виртуальные методы могут быть или не могут быть переопределены.
Рекомендуем:
Разница между виртуальным хостингом и хостингом VPS
Общий веб-хостинг против веб-хостинга VPS Общий хостинг (общий) и хостинг VPS (виртуальный частный сервер) - это услуги и концепция, предлагаемые провайдером веб-хостинга
Разница между собой и между собой
Друг друга против друг друга В английском языке есть взаимные местоимения, которые используются, чтобы говорить о взаимных чувствах. Два таких профи
Разница между абстрактным классом и наследованием
Абстрактный класс против наследования Абстрактный класс и наследование - две важные объектно-ориентированные концепции, встречающиеся во многих объектно-ориентированных языках программирования
Разница между абстрактным классом и интерфейсом
Абстрактный класс против интерфейса Абстрактный класс и интерфейс - это две объектно-ориентированные конструкции, встречающиеся во многих объектно-ориентированных языках программирования, таких как Java
Разница между ключевыми различиями между металлическими и неметаллическими минералами
Ключевое различие - металлические и неметаллические минералы Минерал - это встречающийся в природе твердый и неорганический компонент с определенной химической формулой и