146

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

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

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

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

4

12 回答 12

149

您要查找的关键字是super. 例如,请参阅本指南

于 2008-11-06T14:46:28.950 回答
143

只需使用 super 调用它。

public void myMethod()
{
    // B stuff
    super.myMethod();
    // B stuff
}
于 2008-11-06T14:46:42.227 回答
21

super.MyMethod()应该MyMethod()class B. 所以应该如下

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

class B extends A {
    public void myMethod() { 
        super.MyMethod();
        /* Another code */ 
    }
}
于 2008-11-06T14:47:14.517 回答
21

答案如下:

super.Mymethod();
super();                // calls base class Superclass constructor.
super(parameter list);          // calls base class parameterized constructor.
super.method();         // calls base class method.
于 2011-11-15T10:23:32.453 回答
8

调用 super.myMethod();

于 2008-11-06T14:46:07.703 回答
7

我很确定您可以使用 Java 反射机制来做到这一点。它不像使用 super 那样简单,但它给你更多的力量。

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

class B extends A
{
    public void myMethod()
    {
        super.myMethod(); // calling parent method
    }
}
于 2014-04-16T14:31:06.453 回答
4

使用super关键字。

于 2008-11-06T14:46:44.970 回答
3
super.baseMethod(params);

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

于 2011-09-15T08:32:04.963 回答
3
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);
    }
}
于 2013-12-21T10:10:28.413 回答
3

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

于 2016-05-17T15:16:29.467 回答
1
// 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);
    }
}
于 2013-12-21T10:01:51.917 回答
1

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

或者,如果您想从子类方法调用超类的方法,则必须在子类方法中使用 super 关键字,例如: super.myMethod();

于 2016-04-27T10:33:43.387 回答