Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带接口的Java多态性_Java_Interface_Polymorphism - Fatal编程技术网

带接口的Java多态性

带接口的Java多态性,java,interface,polymorphism,Java,Interface,Polymorphism,我正在学习AP Comp Sci,我们正在学习多态性和遗传。我们的讲师给了我们以下问题: 如果类C1和C2都实现了接口Cint,它有一个方法“whichIsIt”,如果c1c=newc1();在程序的一个点执行,然后执行后面的指令c.whichIsIt();将调用C1中定义的whichIsIt方法 假设答案是假的。然而,这对我来说毫无意义。多态性的关键在于它使用动态绑定,并将使用层次结构中最低级别的类中定义的方法。这个问题的答案怎么可能是假的?Java对final和重载方法有早期绑定,对重写方法

我正在学习AP Comp Sci,我们正在学习多态性和遗传。我们的讲师给了我们以下问题:

如果类C1和C2都实现了接口Cint,它有一个方法“whichIsIt”,如果c1c=newc1();在程序的一个点执行,然后执行后面的指令c.whichIsIt();将调用C1中定义的whichIsIt方法


假设答案是假的。然而,这对我来说毫无意义。多态性的关键在于它使用动态绑定,并将使用层次结构中最低级别的类中定义的方法。这个问题的答案怎么可能是假的?

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

只是澄清一下,如果方法被重写,它将使用类层次结构中声明的较低的方法?编辑答案澄清。谢谢。这个问题似乎应该澄清该方法是否被覆盖。我感谢对这个问题的澄清。