En Java no podemos anular un método final pero ¿es posible sobrecargar?es posible sobrecargar un método final
Respuesta
Sí, la sobrecarga de un método final es perfectamente legítima.
Por ejemplo:
public final void doStuff(int x) { ... }
public final void doStuff(double x) { ... }
Sí Es posible.
Puede examinar este tipo de cosas escribiendo pequeñas clases de Java.
class TestClass{
final public void testMethod(){
}
final public void testMethod(int i){
}
}
SÍ, ¿por qué no? Es tan legal como sobrecargar métodos no finales.
Pero no se los puede sustituir (ya lo saben).
Ej:
public final void func(String x) {/* code */}
public final void func(double x) { /* more code */ }
public final void func(int x) { /* yeah I have still more code */ }
¿Por qué un voto abajo? –
sí sobrecarga último método es posible en java.As métodos finales están restringidas no para anular los métodos.
mientras que la lista de argumentos de sobrecarga debe ser del tipo diferente del método de sobrecarga.
Sí, es muy posible.
Un pequeño programa para demostrar que:
class A{
final void foo(){ System.out.println("foo ver 1 from class A"); }
final void foo(int a){ System.out.println("foo ver 2 from class A"); }
}
class B extends A{
final void foo(long l){ System.out.println("foo ver 3 from class B"); }
// final void foo(){ System.out.println("foo ver 1 from class A"); } NOT ALLOWED
}
public class Test {
public static void main(String [] args){
B obj = new B();
obj.foo();
obj.foo(1);
obj.foo(1L);
}
}
Salida:
foo ver 1 from class A foo ver 2 from class A foo ver 3 from class B
Sí, pero tenga en cuenta que el envío dinámica podría no hacer lo que usted está esperando! Ejemplo rápido:
class Base {
public final void doSomething(Object o) {
System.out.println("Object");
}
}
class Derived extends Base {
public void doSomething(Integer i) {
System.out.println("Int");
}
}
public static void main(String[] args) {
Base b = new Base();
Base d = new Derived();
b.doSomething(new Integer(0));
d.doSomething(new Integer(0));
}
Esto imprimirá:
Object Object
Sí, debido a que a ambos objetos creados en el método principal se les asigna el tipo de datos superior "Base", ambos imprimirán "* Objeto *". Como la instancia 'Derived' tiene una relación" * is a * "con la clase' Base', este objeto se puede convertir a 'Derived' para invocar el método que imprime" * Int * ". –
@IanCampbell Exactamente '((Derivado) d) .doSomething (1);' –
El envío dinámico ocurre cuando se reemplazan los métodos, no con la sobrecarga. – sharhp
sí podemos sobrecargar los métodos finales
Sí:
class a {
final void method1(int a,int b) {
System.out.println("super class");
int d = a+ b;
System.out.println(d);
}
}
class b extends a{
final void method1(int a) {
System.out.println("sub class");
System.out.println(a);
}
}
public class c {
public static void main(String ar[]) {
b m = new b();
m.method1(10);
}
}
Debe formatear su código y agregar algo para explicar su respuesta. – Jonathan
- 1. ¿Es posible sobrecargar la asignación de Python?
- 2. ¿Es posible sobrecargar la función en F #?
- 3. ¿Es posible sobrecargar las mezclas en sass?
- 4. ¿Es posible sobrecargar/importar en Python?
- 5. es posible marcar el método reemplazado como final
- 6. ¿Es posible sobrecargar el método ShowDialog para formularios y devolver un resultado diferente?
- 7. ¿Es esto una mala práctica sobrecargar un método?
- 8. ¿Es posible sobrecargar a los operadores en C?
- 9. ¿Es posible sobrecargar los métodos múltiples de Clojure en Arity?
- 10. ¿Es posible sobrecargar a los operadores en PHP?
- 11. Cómo sobrecargar el método __bool__ de Python?
- 12. ¿Es posible anular un método no virtual?
- 13. ¿Cómo hacer un método "final" en Perl?
- 14. ¿Es posible finalizar un método virtual en C#?
- 15. ¿Es una mala idea declarar un método estático final?
- 16. ¿Podemos sobrecargar el método principal en Java?
- 17. En F #. ¿Es posible sobrecargar al constructor de un tipo abstracto?
- 18. ¿Es posible en C# sobrecargar un operador genérico de colada de la siguiente manera?
- 19. ¿Currying es lo mismo que sobrecargar?
- 20. ¿Cuál es la forma más elegante de sobrecargar un constructor/método?
- 21. Cómo sobrecargar un destructor?
- 22. ¿Qué es un punto final?
- 23. ¿Cómo puedo sobrecargar el método en el servicio web Java?
- 24. ¿Es posible refactorizar este método de extensión?
- 25. ¿Es posible vincular datos a un método en Silverlight?
- 26. ¿Es posible evitar que un método se muestre en intellisense?
- 27. ¿Es posible emitir una señal Qt desde un método const?
- 28. ¿es posible simular/falsificar un método de extensión?
- 29. ¿Es posible definir un método de extensión genérico en F #?
- 30. ¿Es posible reemplazar el método Groovy por un objeto existente?
Cuando has probado lo que pasó? –