在 Java 中,如何从派生类中的重写方法调用基类的方法?

我有两个 Java 类: B,它扩展了另一个类 A,如下所示:

class A {
public void myMethod() { /* ... */ }
}


class B extends A {
public void myMethod() { /* Another code */ }
}

我想从 B.myMethod()呼叫 A.myMethod()。我来自 C + + 世界,我不知道如何用 Java 做这些基本的事情。

280716 次浏览

调用 super.myMethod () ;

您正在寻找的关键字是 super

就叫它超级。

public void myMethod()
{
// B stuff
super.myMethod();
// B stuff
}

使用 好极了关键字。

super.MyMethod()应该在 class BMyMethod()内部调用

class A {
public void myMethod() { /* ... */ }
}


class B extends A {
public void myMethod() {
super.MyMethod();
/* Another code */
}
}
super.baseMethod(params);

使用 好极了关键字调用基方法并传递相应的参数。

答案如下:

super.Mymethod();
super();                // calls base class Superclass constructor.
super(parameter list);          // calls base class parameterized constructor.
super.method();         // calls base class method.
// 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);
}
}
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);
}
}

我非常确定您可以使用 Java 反射机制来完成这项工作。它不像使用 super 那样简单,但是它给你更多的力量。

class A
{
public void myMethod()
{ /* ... */ }
}


class B extends A
{
public void myMethod()
{
super.myMethod(); // calling parent method
}
}

如果您使用这些方法进行初始化,那么使用类 A 的构造函数,并在类 B 的构造函数中传递 super 关键字。

或者,如果你想从子类方法中调用 super 类的方法,那么你必须在子类方法中使用 super 关键字,比如: MyMethod () ;

看,这里你重写了基类的一个方法,因此如果你想从继承类中调用基类方法,那么你必须在继承类的同一个方法中使用 超级关键字。