Java中重写和重载的深入浅析-创新互联

Java中重写和重载的深入浅析?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

创新互联是一家专业提供于洪企业网站建设,专注与网站制作、成都网站设计、H5页面制作、小程序制作等业务。10年已为于洪众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。

Java中重写和重载的深入浅析

重载(Overloading)和重写(Overriding)是Java中两个比较重要的概念。但是对于新手来说也比较容易混淆。本文通过两个简单的例子说明了他们之间的区别。

定义

重载

简单说,就是函数或者方法有同样的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。

重写

重写指的是在Java的子类与父类中有两个名称、参数列表都相同的方法的情况。由于他们具有相同的方法签名,所以子类中的新方法将覆盖父类中原有的方法。

重载 VS 重写

关于重载和重写,你应该知道以下几点:

1、重载是一个编译期概念、重写是一个运行期间概念。

2、重载遵循所谓“编译期绑定”,即在编译时根据参数变量的类型判断应该调用哪个方法。

3、重写遵循所谓“运行期绑定”,即在运行的时候,根据引用变量所指向的实际对象的类型来调用方法

4、因为在编译期已经确定调用哪个方法,所以重载并不是多态。而重写是多态。重载只是一种语言特性,是一种语法规则,与多态无关,与面向对象也无关。(注:严格来说,重载是编译时多态,即静态多态。但是,Java中提到的多态,在不特别说明的情况下都指动态多态)

重写的例子

下面是一个重写的例子,看完代码之后不妨猜测一下输出结果:

class Dog{
  public void bark(){
    System.out.println("woof ");
  }
}
class Hound extends Dog{
  public void sniff(){
    System.out.println("sniff ");
  }

  public void bark(){
    System.out.println("bowl");
  }
}

public class OverridingTest{
  public static void main(String [] args){
    Dog dog = new Hound();
    dog.bark();
  }
}

分享文章:Java中重写和重载的深入浅析-创新互联
路径分享:http://azwzsj.com/article/dogioh.html