¿Es posible escribir métodos virtuales en Java, como se haría en C ++?
¿O existe un enfoque Java adecuado que pueda implementar que produzca un comportamiento similar? ¿Podría por favor tener algunos ejemplos?
java
virtual
virtual-functions
yonatan
fuente
fuente
¿Puedes escribir funciones virtuales en Java?
Si. De hecho, todos los métodos de instancia en Java son virtuales por defecto. Solo ciertos métodos no son virtuales:
Aquí hay unos ejemplos:
Funciones virtuales "normales"
El siguiente ejemplo es de una versión anterior de la página de Wikipedia mencionada en otra respuesta.
Salida:
Ejemplo con funciones virtuales con interfaces
Los métodos de la interfaz Java son todos virtuales. Ellos deben ser virtual porque se basan en las clases que implementan para proporcionar las implementaciones de métodos. El código a ejecutar solo se seleccionará en tiempo de ejecución.
Por ejemplo:
Ejemplo con funciones virtuales con clases abstractas.
Similar a las interfaces Las clases abstractas deben contener métodos virtuales porque dependen de la implementación de las clases extendidas. Por ejemplo:
fuente
Todas las funciones en Java son virtuales por defecto.
Debe hacer todo lo posible para escribir funciones no virtuales agregando la palabra clave "final".
Esto es lo opuesto al valor predeterminado de C ++ / C #. Las funciones de clase no son virtuales por defecto; los haces agregando el modificador "virtual".
fuente
Todos los métodos de instancias no privadas son virtuales por defecto en Java.
En C ++, los métodos privados pueden ser virtuales. Esto puede explotarse para el lenguaje de interfaz no virtual (NVI). En Java, necesitaría proteger los métodos anulables de NVI.
De la especificación del lenguaje Java, v3:
fuente
Sí, puedes escribir "funciones" virtuales en Java.
fuente
En Java, todas las variables y funciones públicas (no privadas) son virtuales de forma predeterminada. Además, las variables y funciones que usan la palabra clave final no son virtuales .
fuente