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

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

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

我想从B.myMethod()中调用A.myMethod()。 我来自C ++的世界 ,我不知道如何在Java中做这个基本的事情:(如果有人可以帮助:)谢谢。

您正在寻找的关键字是super 。 例如,请参阅本指南 。

只需使用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()应该在class BMyMethod()MyMethod() 。 所以应该如下

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

我很确定你可以使用Javareflection机制。 这不像使用超级简单,但它给你更多的权力。

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

调用super.myMethod();

使用super关键字。

 super.baseMethod(params); 

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

在这里你可以重写基类的一个方法,因此如果你喜欢从inheritance类调用基类方法,那么你必须在inheritance类的相同方法中使用super关键字。

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

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

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