在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 B
的MyMethod()
中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();