我有两个Java类:B,它扩展了另一个类A,如下:
class A {
public void myMethod() { /* ... */ }
}
class B extends A {
public void myMethod() { /* Another code */ }
}
我想调用A.myMethod()
from B.myMethod()
。我来自C++ 世界,我不知道如何用 Java 做这个基本的事情。
我有两个Java类:B,它扩展了另一个类A,如下:
class A {
public void myMethod() { /* ... */ }
}
class B extends A {
public void myMethod() { /* Another code */ }
}
我想调用A.myMethod()
from B.myMethod()
。我来自C++ 世界,我不知道如何用 Java 做这个基本的事情。
您要查找的关键字是super
. 例如,请参阅本指南。
只需使用 super 调用它。
public void myMethod()
{
// B stuff
super.myMethod();
// B stuff
}
super.MyMethod()
应该MyMethod()
在class B
. 所以应该如下
class A {
public void myMethod() { /* ... */ }
}
class B extends A {
public void myMethod() {
super.MyMethod();
/* Another code */
}
}
答案如下:
super.Mymethod();
super(); // calls base class Superclass constructor.
super(parameter list); // calls base class parameterized constructor.
super.method(); // calls base class method.
调用 super.myMethod();
我很确定您可以使用 Java 反射机制来做到这一点。它不像使用 super 那样简单,但它给你更多的力量。
class A
{
public void myMethod()
{ /* ... */ }
}
class B extends A
{
public void myMethod()
{
super.myMethod(); // calling parent method
}
}
使用super关键字。
super.baseMethod(params);
使用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);
}
}
看,这里你覆盖了基类的方法之一,因此如果你想从继承类调用基类方法,那么你必须在继承类的同一方法中使用super关键字。
// 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();