Diciamo che ho due classi Base
e Derived
:uso forza di un metodo della classe base in Java
public class Base {
public Base() { }
public void methodA() {
System.out.println("Base: methodA");
methodB();
}
public void methodB() {
System.out.println("Base: methodB");
}
}
public class Derived extends Base {
public Derived() { }
public void methodA() {
super.methodA();
System.out.println("Derived: methodA");
}
public void methodB() {
System.out.println("Derived: methodB");
}
}
Ora, con questo:
Base d = new Derived();
d.methodA();
stamperà:
Base: methodA
Derived: methodB
Derived: methodA
La mia domanda è: È possibile forzare d.methodA()
per usare Base.methodB()
? Voglio il codice per stampare:
Base: methodA
Base: methodB
Derived: methodA
Per coloro informato in C++, questo potrebbe essere fatto con qualcosa come Base::methodB()
nella classe Base
. Esiste un equivalente in Java?
Sono quasi sicuro che questo è stato chiesto prima, ma non sono riuscito a trovare nulla, mi dispiace se questo è un duplicato.
No, un metodo sottoposto a override non può essere non sovrascritto in Java. La chiamata al metodo genitore chiamerà sempre il metodo sottoclasse. Potrebbe essere possibile farlo in byte code ma questo non sarebbe in Java. –