我正在参加AP Comp Sci,我们正在学习多态性和继承。我们的老师给了我们以下问题:
如果类C1和C2都实现了接口Cint,则该接口具有方法“ whichIsIt”,并且如果C1 c = new C1(),则返回Cint。在程序的某一点执行,然后执行更高的指令c.whichIsIt();将调用C1中定义的whichIsIt方法。
答案可能是错误的。但是,这对我来说毫无意义。多态的全部要点是它使用动态绑定,并将使用在层次结构中最低的类中定义的方法。这个问题的答案怎么可能是错误的?
最佳答案
Java对最终和重载方法具有早期绑定,而对重写方法具有后期绑定。因此,除非whichIsIt方法是最终方法或重载方法,否则答案应为true。同样,在java8接口之前,不允许使用方法实现。
Cint c = new C1();
c.whichIsIt() //Assuming C1 overrides whichIsIt method defined in Cint,
//then this will call C1.whichIsIt method