带接口的Java多态性
我正在学习AP Comp Sci,我们正在学习多态性和遗传。我们的讲师给了我们以下问题: 如果类C1和C2都实现了接口Cint,它有一个方法“whichIsIt”,如果c1c=newc1();在程序的一个点执行,然后执行后面的指令c.whichIsIt();将调用C1中定义的whichIsIt方法带接口的Java多态性,java,interface,polymorphism,Java,Interface,Polymorphism,我正在学习AP Comp Sci,我们正在学习多态性和遗传。我们的讲师给了我们以下问题: 如果类C1和C2都实现了接口Cint,它有一个方法“whichIsIt”,如果c1c=newc1();在程序的一个点执行,然后执行后面的指令c.whichIsIt();将调用C1中定义的whichIsIt方法 假设答案是假的。然而,这对我来说毫无意义。多态性的关键在于它使用动态绑定,并将使用层次结构中最低级别的类中定义的方法。这个问题的答案怎么可能是假的?Java对final和重载方法有早期绑定,对重写方法
假设答案是假的。然而,这对我来说毫无意义。多态性的关键在于它使用动态绑定,并将使用层次结构中最低级别的类中定义的方法。这个问题的答案怎么可能是假的?Java对final和重载方法有早期绑定,对重写方法有后期绑定。因此,除非哪个SIT方法是最终的或重载的,否则答案应该是正确的。同样在java8之前,接口不允许有方法实现
Cint c = new C1();
c.whichIsIt() //Assuming C1 overrides whichIsIt method defined in Cint,
//then this will call C1.whichIsIt method
只是澄清一下,如果方法被重写,它将使用类层次结构中声明的较低的方法?编辑答案澄清。谢谢。这个问题似乎应该澄清该方法是否被覆盖。我感谢对这个问题的澄清。