Все методы в java implictly virtual
Если в java нет привязки времени компиляции, значит ли это, что все привязки выполняются во время выполнения?
Но в соответствии с концепцией ООП для привязки к исполнению функции должны иметь виртуальное ключевое слово..Описание всех методов, неявно виртуальных в java, или существует ли какое-либо связывание времени компиляции в java
Если есть какая-либо привязка времени компиляции, можете ли вы дать мне определенную ситуацию или ссылки на дополнительную информацию.
- Static (Нет смысла связывать здесь, поскольку static не принадлежит объекту)
- final (это не действительная точка, поскольку она может быть достигнута по-другому)
Ответы
Ответ 1
Все методы non static
, non final
и non private
по умолчанию виртуальны в Java. Однако JVM достаточно умен, чтобы найти классы, имеющие только одну реализацию данного метода и превратить его в статическую привязку.
Таким образом, вам не нужно запоминать ключевое слово virtual
(когда-либо испытываемая утечка памяти из-за отсутствия virtual
на деструкторе в С++?), в то время как производительность не сильно влияет на это.
Ответ 2
Нестатический вызов метода является основным (только) динамическим аспектом Java. Все методы виртуальны в Java. Это не относится к статическим методам, которые привязаны во время компиляции на основе статического типа объекта.
Ответ 3
Определение виртуального из вики:
В объектно-ориентированном программировании виртуальная функция или виртуальный метод - это функция или метод, поведение которых можно переопределить внутри наследующего класса функцией с той же сигнатурой, чтобы обеспечить полиморфное поведение.
Поэтому, согласно определению, каждый нестатический метод в JAVA является виртуальным методом по умолчанию, за исключением конечных и частных методов. Методы, которые не могут быть унаследованы для полиморфного поведения, не являются виртуальным методом.
Ответ 4
Методы, которые мы не можем переопределить в подклассе, обычно называются не виртуальными методами.
В Java статические, частные и окончательные методы по умолчанию не являются виртуальными. Другие методы по умолчанию являются виртуальными.