In Java, wie rufe ich eine Methode der Basisklasse aus der übergeordneten Methode in einer abgeleiteten Klasse?
-
06-07-2019 - |
Frage
Ich habe zwei Java-Klassen: B, die eine andere Klasse A erstreckt sich wie folgt:
class A {
public void myMethod() { /* ... */ }
}
class B extends A {
public void myMethod() { /* Another code */ }
}
Ich möchte die A.myMethod()
von B.myMethod()
nennen. Ich komme aus dem C ++ Welt , und ich weiß nicht, wie diese grundlegende Sache in Java zu tun.
Lösung
Das Schlüsselwort Sie suchen ist super
. Siehe diese Anleitung , zum Beispiel.
Andere Tipps
Just es nennen Super verwenden.
public void myMethod()
{
// B stuff
super.myMethod();
// B stuff
}
Antwort lautet wie folgt:
super.Mymethod();
super(); // calls base class Superclass constructor.
super(parameter list); // calls base class parameterized constructor.
super.method(); // calls base class method.
super.MyMethod()
sollte innerhalb der MyMethod()
des class B
aufgerufen werden. So soll es sein wie folgt
class A {
public void myMethod() { /* ... */ }
}
class B extends A {
public void myMethod() {
super.MyMethod();
/* Another code */
}
}
Ich bin mir ziemlich sicher, dass Sie es Java Reflection-Mechanismus zu tun. Es ist nicht so einfach, wie mit Super aber es gibt Ihnen mehr Macht.
class A
{
public void myMethod()
{ /* ... */ }
}
class B extends A
{
public void myMethod()
{
super.myMethod(); // calling parent method
}
}
nennen super.myMethod ();
Mit dem Super Stichwort.
super.baseMethod(params);
rufen Sie die Basismethoden mit Super Keywords und die entsprechenden params übergeben.
class test
{
void message()
{
System.out.println("super class");
}
}
class demo extends test
{
int z;
demo(int y)
{
super.message();
z=y;
System.out.println("re:"+z);
}
}
class free{
public static void main(String ar[]){
demo d=new demo(6);
}
}
Sehen Sie, hier sind Sie überschreiben eine der Methode der Basisklasse also, wenn Sie mögen von vererbten Klasse Basisklasse Methode aufrufen, dann müssen Sie mit Super Stichwort in der gleichen Methode der vererbten Klasse.
Wenn u r diese Methoden für die Initialisierung verwendet dann Konstruktoren der Klasse A verwenden und Super Schlüsselwort innerhalb des Konstruktors der Klasse B übergeben.
Oder wenn Sie eine Methode der Superklasse von der Unterklasse Methode aufrufen wollen, dann müssen Sie Schlüsselwort super in der Unterklasse Methode verwenden, wie: super.myMethod ();
// Using super keyword access parent class variable
class test {
int is,xs;
test(int i,int x) {
is=i;
xs=x;
System.out.println("super class:");
}
}
class demo extends test {
int z;
demo(int i,int x,int y) {
super(i,x);
z=y;
System.out.println("re:"+is);
System.out.println("re:"+xs);
System.out.println("re:"+z);
}
}
class free{
public static void main(String ar[]){
demo d=new demo(4,5,6);
}
}