PDA

View Full Version : [java] overriding


mad_hhatter
02-09-2007, 23:06
supponiamo di avere la seguente situazione

class A {
public void method() {}
}

class B extends A {
public void method{
...
}
}

ora la domanda e' la seguente: esiste un modo per creare un oggetto di tipo B e fargli invocare il metodo method della classe A e NON la versione ridefinita in B? ho provato un cast esplicito B b = new B(); ((A)b).mthod(); ma viene chiamato sempre e comunque il metodo specificato in B.

grazie per la risposta

beppegrillo
02-09-2007, 23:34
provato con A.method()?

Edit:
Ehm qusto forse lo potevi fare con un metodo statico x_x

PGI-Bis
02-09-2007, 23:36
Non si può.

Puoi creare un secondo metodo in B che invochi la superdefinizione:

public class B extends A {
public void metodo() { ...sovrascrive A.metodo()... }
public void superMetodo() { super.metodo(); invoca la super definizione }
}

E' bizzarro.

mad_hhatter
03-09-2007, 09:40
Non si può.

Puoi creare un secondo metodo in B che invochi la superdefinizione:

public class B extends A {
public void metodo() { ...sovrascrive A.metodo()... }
public void superMetodo() { super.metodo(); invoca la super definizione }
}

E' bizzarro.

grazie PGI-Bis, lo sospettavo, ma non ci avevo mai fatto attenzione... la cosa è nata perché sto studiando anche C# che distingue tra metodi virtual e non...

comunque mille grazie per l'aiuto :)