java method overload inheritance and polymorphism

后端 未结 2 1697
佛祖请我去吃肉
佛祖请我去吃肉 2021-01-25 15:41

Here\'s a test practice question i came across, would appreciate your help in making me understand the concepts

Let Hawk be a subclass of Bird. Suppose some class has tw

2条回答
  •  耶瑟儿~
    2021-01-25 16:33

    At compile time, method invocation for overloaded methods is determined based on the type the method parameters and the compile time (or static) type of the method arguments.

    In your case, Third#foo(..) can take a Hawk and it can take a Bird. In your invocation

    y.foo(x);
    

    the compile time (or static) type of the argument x is Bird, since that's how it's declared, so the Third#foo(Bird) method will be invoked.

提交回复
热议问题