Accediendo al método de clase abstracta

Tengo tres clases diferentes:

1-)

abstract class A {
abstract void one();
void two(){
    System.out.println("two");
one();
}
abstract void three();
 }

2-)

abstract class B extends A {
void one() {
    System.out.println("one");
    three();//I think this method has to run
}

void three() {
    System.out.println("3");//That
}
}

3-)

public class C extends B {
void three(){
    System.out.println("three");
}

}

en el método principal

public static void main(String [] args){
C c=new C();
c.one();
c.two();
c.three();
}

Salida:

one
three
two
one
three
three

Pero creo que en el segundo código, el método one () debe ejecutar su método tres y debe mostrar "3" en lugar de "tres", pero este código ejecuta tres en clase C.

Respuesta 1

El método three () se anula en las clases B y C

Como c es una instancia de la clase C, cualquier referencia al método three () con el objeto c invocará la implementación three () en la clase C

Respuesta: 2

El three()método se anula en C. Como ccontiene una instancia de C, esa es la salida que ves.

Respuesta: 3

Tengo algunos problemas para usar mySQL y Spring JDBCTemplate. Tengo un INSERT ... ON DUPLICATE KEY UPDATE que incrementa un contador, pero usa el truco LAST_INSERT_ID () para devolver el nuevo valor en el ...

Estoy tratando de ejecutar mi archivo de características. Ejecutar como función de pepino en Eclipse. Pero recibo un error. Cuando estoy tratando de ejecutar la clase Runner (con pepino JVM + JUnit). Está funcionando bien. Nota :- ...

¿Qué sucedió si no hay valor para algunos campos de clase en el archivo xml durante la desagregación JAXB? ¿JAXB simplemente "omitió" este valor y los dejó sin inicializar?

He estado jugando con Selenium 2 por un tiempo, con el propósito de ejecutar pruebas automatizadas. Mi objetivo es escribir pruebas en Java y ejecutar cada prueba en diferentes navegadores, simultáneamente si ...