我有两个类A和B。“ A”由方法map()组成,该方法在类B中被覆盖。在主类中,我为类“ B”创建一个对象。我想调用“ A”类的map()。有什么办法可以做到这一点?
我尝试使用super关键字,但是没有用。
class Parent {
void Print() {
System.out.println("parent class");
}
}
class subclass1 extends Parent {
@Override
void Print()
{
System.out.println("subclass1");
}
}
public class Example1 {
public static void main(String[] args)
{
Parent a;
a = new subclass1();
a.Print();
super(a).Print();
}
}
答案 0 :(得分:0)
否,在Java中是不可能的。如果要调用Parent
的重写方法,则必须实例化Parent
。除非您能够修改Subclass1
,否则您可以引入一个新方法来调用父方法。
public class Subclass1 extends Parent {
public void printParent() {
super.print();
}
}
答案 1 :(得分:0)
所以这里发生了很多事情:
首先,我应该指出,您没有遵循Java命名约定,您可能应该研究一下。
第二,您无法完成所需的操作,并且super(a).print();
在语法上是错误的。
您可以在Subclass1中这样调用父级:
class Subclass1 extends Parent {
@Override
void print() {
super().print();
System.out.println("subclass1");
}
}
然后它将打印两个字符串。
如果只需要父级的行为,则可以直接实例化它,因为它不是抽象的:
public class Example1 {
public static void main(String[] args) {
Parent a = new Parent();
a.print();
}
}