146

次のように、別のクラス A を拡張する B という 2 つの Java クラスがあります。

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

スーパーを使って呼んでください。

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 Reflection メカニズムを使用してそれを実行できると確信しています。スーパーを使用するほど簡単ではありませんが、より強力になります。

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
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.baseMethod(params);

スーパーキーワードを使用して基本メソッドを呼び出し、それぞれのパラメーターを渡します。

于 2011-09-15T08:32:04.963 に答える
1

初期化にこれらのメソッドを使用する場合は、クラス A のコンストラクターを使用し、クラス B のコンストラクター内に super キーワードを渡します。

または、サブクラス メソッドからスーパー クラスのメソッドを呼び出したい場合は、次のようにサブクラス メソッド内で super キーワードを使用する必要があります。

于 2016-04-27T10:33:43.387 に答える