在main()方法中通过子对象调用重写的方法

时间:2019-08-30 14:50:07

标签: java inheritance

我有两个类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();
    } 
}

2 个答案:

答案 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();
    } 
}