Supongamos que tengo dos clases, A y B. La clase A se define como abstracta, mientras que B amplía esta clase abstracta, y finalmente pruebo el resultado y ambas clases son parte del mismo paquete .Comprender el propósito de Clases abstractas en Java
public abstract class A {
protected abstract void method1();
protected void method2() {
System.out.println("This is Class A's method");
}
}
public class B extends A {
@Override
protected void method1() {
System.out.println("This is B's implementaiton of A's method");
}
}
y ahora cuando pruebo ellos:
B b = new B();
b.method1();
b.method2();
consigo salida esperada:
This is B's implementaiton of A's method
This is Class A's method
PREGUNTAS:
- ¿Cuál es el propósito de
@Override
k eyword, porque si lo omito, sigue funcionando igual. - Si no implemento el método abstracto, aparece un error de compilación. Entonces, ¿cuál es la diferencia de implementar una interfaz? También puede implementar
method2()
en B. Luego, la salida cambia a lo que se usa en B. ¿No está esto también anulando el método de clase padre? Entonces, ¿cuál es el propósito de definir explícitamente un método como abstract en la Clase A?
veces es más rápido a Google que preguntar o responder aquí: http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html – vulkanino
Google está bloqueado en nuestra escuela – 911TurboS
¿Cómo existe el Internet sin Google? – jondavidjohn