Подтвердить что ты не робот

Все методы в java implictly virtual

Если в java нет привязки времени компиляции, значит ли это, что все привязки выполняются во время выполнения?

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

Если есть какая-либо привязка времени компиляции, можете ли вы дать мне определенную ситуацию или ссылки на дополнительную информацию.

  • Static (Нет смысла связывать здесь, поскольку static не принадлежит объекту)
  • final (это не действительная точка, поскольку она может быть достигнута по-другому)
4b9b3361

Ответ 1

Все методы non static, non final и non private по умолчанию виртуальны в Java. Однако JVM достаточно умен, чтобы найти классы, имеющие только одну реализацию данного метода и превратить его в статическую привязку.

Таким образом, вам не нужно запоминать ключевое слово virtual (когда-либо испытываемая утечка памяти из-за отсутствия virtual на деструкторе в С++?), в то время как производительность не сильно влияет на это.

Ответ 2

Нестатический вызов метода является основным (только) динамическим аспектом Java. Все методы виртуальны в Java. Это не относится к статическим методам, которые привязаны во время компиляции на основе статического типа объекта.

Ответ 3

Определение виртуального из вики:

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

Поэтому, согласно определению, каждый нестатический метод в JAVA является виртуальным методом по умолчанию, за исключением конечных и частных методов. Методы, которые не могут быть унаследованы для полиморфного поведения, не являются виртуальным методом.

Ответ 4

Методы, которые мы не можем переопределить в подклассе, обычно называются не виртуальными методами.

В Java статические, частные и окончательные методы по умолчанию не являются виртуальными. Другие методы по умолчанию являются виртуальными.