Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.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_Inheritance_Polymorphism_Overloading - Fatal编程技术网

java方法重载继承和多态性

java方法重载继承和多态性,java,inheritance,polymorphism,overloading,Java,Inheritance,Polymorphism,Overloading,这是我遇到的一个测试练习问题,希望您能帮助我理解这些概念 让鹰成为鸟的一个亚类。假设某个类有两个重载方法void foo(Hawk) h) 和void foo(鸟b)。在调用foo(x)之后,将执行哪个版本 声明鸟x=新鹰() 这是到目前为止我掌握的代码,有人能解释一下为什么执行foo(birdb)吗 public class MPractice { public static void main(String args[]) { Bird x = new Hawk();

这是我遇到的一个测试练习问题,希望您能帮助我理解这些概念

让鹰成为鸟的一个亚类。假设某个类有两个重载方法void foo(Hawk) h) 和void foo(鸟b)。在调用foo(x)之后,将执行哪个版本 声明鸟x=新鹰()

这是到目前为止我掌握的代码,有人能解释一下为什么执行foo(birdb)吗

public class MPractice {
    public static void main(String args[]) {
        Bird x = new Hawk();
        Third y = new Third();
        y.foo(x);
    }

}



 public class Third {
    void foo(Hawk h) {
        System.out.println("Hawk");
    }
    void foo(Bird b) {
        System.out.println("Bird");
    }


}

当Java为选择方法执行重载解析时,它使用该类型的变量而不是对象的运行时类型来选择方法。
x
的类型是
Bird
,因此选择的
第三种方法是
foo(Bird)


这是因为这里不涉及多态性;我们不是在
Bird
变量
x
上调用一个可能被重写的方法,我们只是在一个不相关的类上调用一组重载方法中的一个,
Third

当Java为选择方法执行重载解析时,它使用该类型的变量,而不是对象的运行时类型,选择方法。
x
的类型是
Bird
,因此选择的
第三种方法是
foo(Bird)


这是因为这里不涉及多态性;我们不是在
Bird
变量
x
上调用一个可能被重写的方法,我们只是在一个不相关的类上调用一组重载方法中的一个,
Third
在编译时,重载方法的方法调用是根据方法参数的类型和编译时(或静态)确定的方法参数的类型

在你的例子中,
Third#foo(..)
可以带一只
,也可以带一只
。在你的召唤中

y.foo(x);

参数
x
的编译时(或静态)类型是
Bird
,因为它是这样声明的,所以将调用
Third#foo(Bird)
方法。

在编译时,重载方法的方法调用是根据方法参数的类型和编译时(或静态)确定的方法参数的类型

在你的例子中,
Third#foo(..)
可以带一只
,也可以带一只
。在你的召唤中

y.foo(x);

参数
x
的编译时(或静态)类型是
Bird
,因为它是这样声明的,所以将调用
Third#foo(Bird)
方法。

此处不涉及多态性。此处不涉及多态性。