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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Java中,如何从派生类中的重写方法调用基类的方法?相关的知识,希望对你有一定的参考价值。

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

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

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

我想从A.myMethod()打电话给B.myMethod()。我来自C++ world,我不知道如何在Java中做这个基本的事情。

答案

您正在寻找的关键字是super。例如,请参阅this guide

另一答案
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);
    }
}
另一答案

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

或者如果你想从子类方法调用超类的方法,那么你必须在子类方法中使用super关键字,如: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);
    }
}
另一答案

只需使用super调用它。

public void myMethod()
{
    // B stuff
    super.myMethod();
    // B stuff
}
另一答案

答案如下:

super.Mymethod();
super();                // calls base class Superclass constructor.
super(parameter list);          // calls base class parameterized constructor.
super.method();         // calls base class method.
另一答案

应该在super.MyMethod()MyMethod()内部召唤class B。所以它应该如下

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

class B extends A {
    public void myMethod() { 
        super.MyMethod();
        /* Another code */ 
    }
}
另一答案

我很确定你可以使用Java Reflection机制来完成它。它不像使用超级那样简单,但它会给你更多的力量。

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

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

调用super.myMethod();

另一答案

使用super关键字。

另一答案
super.baseMethod(params);

使用super关键字调用基本方法并传递相应的参数。

另一答案

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

以上是关于在Java中,如何从派生类中的重写方法调用基类的方法?的主要内容,如果未能解决你的问题,请参考以下文章

基类 派生类 类的继承与约束

为啥派生类中的重写函数会隐藏基类的其他重载?

为啥派生类中的重写函数会隐藏基类的其他重载?

为啥派生类中的重写函数会隐藏基类的其他重载?

如果该属性在派生类中被覆盖,如何调用基类的属性?

C#关键字学习