Consulta de inicialización de subclases de Java, ¡expertos, ingresen libremente!
B b = new B();
∵B hereda de A
El método run() de ∴B anula el método run() de A
∵new B( ) primero llama implícitamente a super()
∴Ejecuta el método público A(){run();}
∵Este método run() es el método de la subclase B
Y ∵ En este momento, el método constructor de la subclase B aún no se ha ejecutado
∴El atributo i de la subclase B aún no tiene valor
∴Ahora i está predeterminado a 0
La confusión del propietario es que no descubrió de quién es el método run() que genera 0 y usted agregó System.out.println("class A"); B") tiene sentido en cada uno de los dos métodos run(). Puede notar que la clase A no está impresa.