小编R. *_*mes的帖子

(Java)如何从超类中调用重写的"继承"方法?

我们直接进入代码:

Father.java:

public class Father {

    public void DoSmth(Father object) {
        // Do something else and print
        Print(object);
    }

    public void Print(Father object) {
        System.out.println("Father");
    }

}
Run Code Online (Sandbox Code Playgroud)

Son.java:

public class Son extends Father {

    public void Print(Son object) {
        System.out.println("Son");
    }

}
Run Code Online (Sandbox Code Playgroud)

Main.java:

public class Main {

    public static void main(String[] args) {

        Father o1 = new Father();
        Son o2 = new Son();

        o1.DoSmth(o1);
        o1.DoSmth(o2);

    }

}
Run Code Online (Sandbox Code Playgroud)

所以,我想得到:

Father
Son
Run Code Online (Sandbox Code Playgroud)

然后,我得到:

Father
Father
Run Code Online (Sandbox Code Playgroud)

我真的不太明白为什么(对于o1.DoSmth(o2))它从父类调用方法,因为o2是Son类型.无论如何我能得到想要的答案吗?

提前致谢

PS:实际上,我想从Father类中调用Print(Son类)方法.可能吗?

java methods overriding class inherited

2
推荐指数
1
解决办法
61
查看次数

标签 统计

class ×1

inherited ×1

java ×1

methods ×1

overriding ×1