In Java, how do I call a base class's method from the overriding method in a derived class?

JavaInheritanceMethodsPolymorphism

Java Problem Overview


I have two Java classes: B, which extends another class A, as follows :

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

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

I would like to call the A.myMethod() from B.myMethod(). I am coming from the C++ world, and I don't know how to do this basic thing in Java.

Java Solutions


Solution 1 - Java

The keyword you're looking for is super. See this guide, for instance.

Solution 2 - Java

Just call it using super.

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

Solution 3 - Java

super.MyMethod() should be called inside the MyMethod() of the class B. So it should be as follows

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

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

Solution 4 - Java

Answer is as follows:

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

Solution 5 - Java

call super.myMethod();

Solution 6 - Java

I am pretty sure that you can do it using Java Reflection mechanism. It is not as straightforward as using super but it gives you more power.

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

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

Solution 7 - Java

Use the super keyword.

Solution 8 - Java

super.baseMethod(params);

call the base methods with super keyword and pass the respective params.

Solution 9 - Java

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);
    }
}

Solution 10 - Java

See, here you are overriding one of the method of the base class hence if you like to call base class method from inherited class then you have to use super keyword in the same method of the inherited class.

Solution 11 - Java

// 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);
    }
}

Solution 12 - Java

If u r using these methods for initialization then use constructors of class A and pass super keyword inside the constructor of class B.

Or if you want to call a method of super class from the subclass method then you have to use super keyword inside the subclass method like : super.myMethod();

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionCreasixtineView Question on Stackoverflow
Solution 1 - JavaunwindView Answer on Stackoverflow
Solution 2 - JavaRobinView Answer on Stackoverflow
Solution 3 - JavageeeeeeeeeekView Answer on Stackoverflow
Solution 4 - JavaYograj kingaonkarView Answer on Stackoverflow
Solution 5 - JavaElieView Answer on Stackoverflow
Solution 6 - JavaGracjan NawrotView Answer on Stackoverflow
Solution 7 - JavaSteve KView Answer on Stackoverflow
Solution 8 - Javakinshuk4View Answer on Stackoverflow
Solution 9 - JavaumanathanView Answer on Stackoverflow
Solution 10 - JavaRahul YadavView Answer on Stackoverflow
Solution 11 - JavaumanathanView Answer on Stackoverflow
Solution 12 - Javaashish rawatView Answer on Stackoverflow