最匹配的重载方法具有一些无效参数_Java:覆盖和重载

覆盖和重载是Java中两个非常重要的概念。它们使Java新手程序员感到困惑。这篇文章通过使用两个简单的示例来说明它们之间的差异。

1.定义

当一个类中的两个或多个方法具有相同的方法名称但参数不同时,就会发生重载

覆盖表示具有相同方法名称和参数的两个方法(即方法签名)。一种方法在父类中,另一种在子类中。重写允许子类提供其父类已经提供的方法的特定实现。

2.覆盖与重载

以下是有关覆盖和重载的一些重要事实:

1)。运行时的实际对象类型,而不是引用变量的类型,决定了运行时使用哪种覆盖方法。相反,引用类型确定在编译时将使用哪种重载方法。2)。多态性适用于覆盖,而不适用于重载。3)。覆盖是一个运行时概念,而重载是一个编译时概念。

3.覆盖示例

这是覆盖的示例。阅读代码后,猜测输出。

狗类{公共 无效树皮(){系统。出来。println (“ woof” );}}类猎犬扩展 Dog {public  void sniff (){系统。出来。println (“嗅探” );}公共 无效树皮(){系统。出来。println (“碗” );}}公共 类 OverridingTest {公共 静态 void main (String  [ ] args ){ 
Dog dog = new Hound ();
狗。树皮();}}

输出:

在上面的示例中,dog变量声明为Dog。在编译期间,编译器检查Dog类是否具有该bark()方法。只要Dog该类具有该bark()方法,就可以进行代码编译。在运行时,将Hound创建一个并将其分配给dog。JVM知道dog是在引用对象Hound,因此它调用的bark()方法Hound。这称为动态多态性。

4.重载示例

狗类{公共 无效树皮(){系统。出来。println (“ woof” );}//重载方法public  void bark (int num ){for (int i = 0 ; i < num ; i ++ )系统。出来。println (“ woof” );}}

在此重载示例中,bark可以通过使用不同的参数来调用这两种方法。编译器知道它们是不同的,因为它们具有不同的方法签名(方法名称和方法参数列表)。

参考文献:1)本教程来自Oracle,它说明了方法的组件以及编译器用来区分方法的组件。

扫码关注

获取更多干货资料

最匹配的重载方法具有一些无效参数_Java:覆盖和重载_第1张图片

你可能感兴趣的:(最匹配的重载方法具有一些无效参数_Java:覆盖和重载)