В Java, как я могу вызвать метод базового класса из переопределяющего метода в производном классе? - PullRequest
129 голосов
/ 06 ноября 2008

У меня есть два класса Java: B, который расширяет другой класс A следующим образом:

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

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

Я хотел бы позвонить на A.myMethod() с B.myMethod(). Я из мира C ++ , и я не знаю, как сделать эту базовую вещь в Java.

Ответы [ 12 ]

136 голосов
/ 06 ноября 2008

Ключевое слово, которое вы ищете: super. См., Например, это руководство .

124 голосов
/ 06 ноября 2008

Просто позвоните, используя super.

public void myMethod()
{
    // B stuff
    super.myMethod();
    // B stuff
}
20 голосов
/ 15 ноября 2011

Ответ следующий:

super.Mymethod();
super();                // calls base class Superclass constructor.
super(parameter list);          // calls base class parameterized constructor.
super.method();         // calls base class method.
18 голосов
/ 06 ноября 2008

super.MyMethod() следует вызывать внутри MyMethod() из class B. Так должно быть следующим образом

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

class B extends A {
    public void myMethod() { 
        super.MyMethod();
        /* Another code */ 
    }
}
8 голосов
/ 16 апреля 2014

Я почти уверен, что вы можете сделать это с помощью механизма Java Reflection. Это не так просто, как использование супер, но дает вам больше силы.

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

class B extends A
{
    public void myMethod()
    {
        super.myMethod(); // calling parent method
    }
}
7 голосов
/ 06 ноября 2008

вызов super.myMethod ();

4 голосов
/ 06 ноября 2008

Используйте ключевое слово super .

3 голосов
/ 17 мая 2016

Смотрите, здесь вы переопределяете один из методов базового класса, поэтому, если вы хотите вызывать метод базового класса из унаследованного класса, вам нужно использовать ключевое слово super в тот же метод унаследованного класса.

3 голосов
/ 21 декабря 2013
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);
    }
}
3 голосов
/ 15 сентября 2011
super.baseMethod(params);

вызывает базовые методы с ключевым словом super и передает соответствующие параметры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...