In Java, how do I call a base class's method from the overriding method in a derived class?
我有两个Java类:B,它扩展了另一个类A,如下:
1 2 3 4 5 6 7 | class A { public void myMethod() { /* ... */ } } class B extends A { public void myMethod() { /* Another code */ } } |
我想从
您要查找的关键字是
用super就可以了。
1 2 3 4 5 6 | public void myMethod() { // B stuff super.myMethod(); // B stuff } |
答案如下:
1 2 3 4 | super.Mymethod(); super(); // calls base class Superclass constructor. super(parameter list); // calls base class parameterized constructor. super.method(); // calls base class method. |
1 2 3 4 5 6 7 8 9 10 | class A { public void myMethod() { /* ... */ } } class B extends A { public void myMethod() { super.MyMethod(); /* Another code */ } } |
我确信你可以用Java反射机制来完成它。它不像使用super那么简单,但它给你更多的力量。
1 2 3 4 5 6 7 8 9 10 11 12 13 | class A { public void myMethod() { /* ... */ } } class B extends A { public void myMethod() { super.myMethod(); // calling parent method } } |
调用super.mymethod();
使用super关键字。
请看,这里您将重写基类的一个方法,因此,如果您想从继承类调用基类方法,则必须在继承类的同一方法中使用super关键字。
1 | super.baseMethod(params); |
使用super关键字调用基方法并传递各自的参数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
如果u r使用这些方法进行初始化,那么使用类A的构造函数并在类B的构造函数内传递super关键字。
或者,如果您想从子类方法调用一个超类方法,那么您必须在子类方法中使用super关键字,例如:super.mymethod();
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | // 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); } } |