我有两个Java类:B,它扩展了另一个类A,如下所示:
class A {
public void myMethod() { /* ... */ }
}
class B extends A {
public void myMethod() { /* Another code */ }
}
我想从A.myMethod()
打电话给B.myMethod()
。我来自C++ world,我不知道如何在Java中做这个基本的事情。
您正在寻找的关键字是super
。例如,请参阅this guide。
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);
}
}
如果你使用这些方法进行初始化,那么使用类A的构造函数并在类B的构造函数中传递super关键字。
或者如果你想从子类方法调用超类的方法,那么你必须在子类方法中使用super关键字,如:super.myMethod();
// 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);
}
}
只需使用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()
的MyMethod()
内部召唤class B
。所以它应该如下
class A {
public void myMethod() { /* ... */ }
}
class B extends A {
public void myMethod() {
super.MyMethod();
/* Another code */
}
}
我很确定你可以使用Java Reflection机制来完成它。它不像使用超级那样简单,但它会给你更多的力量。
class A
{
public void myMethod()
{ /* ... */ }
}
class B extends A
{
public void myMethod()
{
super.myMethod(); // calling parent method
}
}
调用super.myMethod();
使用super关键字。
super.baseMethod(params);
使用super关键字调用基本方法并传递相应的参数。
看,这里你覆盖了基类的一个方法,因此如果你想从继承类调用基类方法,那么你必须在继承类的相同方法中使用super关键字。