一个多态相关的面试题

如题,分享一个秋招遇到的有意思的题目:

class A{
    static void method1(A a){
        System.out.println("aa");
    }
}
class B extends A{
    static void method1(A a){
        System.out.println("ba");
    }
    static void method1(B a){
        System.out.println("bb");
    }
}
class C extends B{
    static void method1(A a){
        System.out.println("ca");
    }
}
class D extends C{
    static void method1(A a){
        System.out.println("da");
    }
}
public class Main2 {
    public static void main(String[] args) {
        D.method1(new A());
        D.method1(new B());
        D.method1(new C());
        B.method1(new A());
        B.method1(new C());
    }
}
主要就是这个D.method1(new B())的结果没有答对,我的理解是形参B被分析成一个A类,但是在面试后自己尝试时发现,输出结果是bb。
主要原因是由于虽然没有显式的写下来,但是依然有method1(B b)函数被隐式继承了。
posted @ 2020-11-19 14:24  奇异与欢愉  阅读(104)  评论(0编辑  收藏  举报