É possível escrever métodos virtuais em Java, como se faria em C ++?
Ou existe uma abordagem Java apropriada que você possa implementar que produz um comportamento semelhante? Poderia, por favor, ter alguns exemplos?
java
virtual
virtual-functions
yonatan
fonte
fonte
Você pode escrever funções virtuais em Java?
Sim. De fato, todos os métodos de instância em Java são virtuais por padrão. Apenas certos métodos não são virtuais:
aqui estão alguns exemplos:
Funções virtuais "normais"
O exemplo a seguir é de uma versão antiga da página da Wikipedia mencionada em outra resposta.
Resultado:
Exemplo com funções virtuais com interfaces
Os métodos de interface Java são todos virtuais. Eles devem ser virtuais porque dependem das classes de implementação para fornecer as implementações do método. O código a ser executado será selecionado apenas no tempo de execução.
Por exemplo:
Exemplo com funções virtuais com classes abstratas.
Semelhante às interfaces As classes abstratas devem conter métodos virtuais, porque contam com a implementação das classes estendidas. Por exemplo:
fonte
Todas as funções em Java são virtuais por padrão.
Você precisa fazer o possível para escrever funções não virtuais adicionando a palavra-chave "final".
É o oposto do padrão C ++ / C #. As funções de classe não são virtuais por padrão; você faz isso adicionando o modificador "virtual".
fonte
Todos os métodos de instância não privados são virtuais por padrão em Java.
No C ++, métodos privados podem ser virtuais. Isso pode ser explorado para o idioma da interface não virtual (NVI). Em Java, você precisa proteger os métodos substituíveis pelo NVI.
Na especificação da linguagem Java, v3:
fonte
Sim, você pode escrever "funções" virtuais em Java.
fonte
Em Java, todas as variáveis e funções públicas (não privadas) são virtuais por padrão. Além disso, variáveis e funções usando a palavra-chave final não são virtuais .
fonte