当前位置:首页>学无止境>文章内容

 java中重载和重写(覆盖)的区别

时间:2017-8-9分类:java知识 张孝帅

  java中重载和重写(覆盖)的区别

  简单的重载和重写可以这样理解:

  重写是子类的方法覆盖父类的方法,要求方法名和参数都相同

  重载是在同一个类中的两个或两个以上的方法,拥有相同的方法名,但是参数却不相同,方法体也不相同,最常见的重载的例子就是类的构造函数,可以参考API帮助文档看看类的构造方法

  (一)

  覆盖又叫重写,从字面就可以知道,它是覆盖了一个方法并且对其重写,以求达到不同的作用。对我们来说最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法进行了声明,而我

  们在实现时,就需要实现接口声明的所有方法。除了这个典型的用法以外,我们在继承中也可能会在子类覆盖父类中的方法。在覆盖要注意以下的几点:

  1、重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载.

  2、重写方法的访问修饰符一定要大于被重写方法的访问修饰符(public>protected>default>private)。

  3、重写的方法的返回值必须和被重写的方法的返回一致;

  4、重写的方法所抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类;

  5、被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行重写。

  6、静态方法不能被重写为非静态的方法(会编译出错)。

  重载:它是指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法,然后再调用时,VM就会根据不同的参数样式,来选择合适的方法执行。在使用重载要注意以下的

  几点:

  1、在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是fun(int, float),

  但是不能为fun(int, int));

  2、不能通过访问权限、返回类型、抛出的异常进行重载;

  3、方法的异常类型和数目不会对重载造成影响;

  (二)

  重载 overloading

  1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载是一个类中多态性的一种表现。

  2) Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型给它们的不同参数个数和

  参数类型给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。

  3) 重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。

  重写overriding

  1) 父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。在Java中,子类可继承父类中的方

  法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。

  2) 若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。

  3) 子类函数的访问修饰权限不能少于父类的;

  java面试笔试题

  • JSP九大内置对象,JSP内置对象右那些?
  • java中重载和重写(覆盖)的区别
  • Java中this和super的用法介绍和区别
  • Java中常量与变量有什么区别
  • 物理内存与虚拟内存的区别
  • java里equals和==的区别
  • Cookie和Session的区别
  • 总结Struts1与Struts2的区别
  • JAVA中关于set()和get()方法的理解及使用
  • java:什么是类?什么是对象?什么是包?
  • hashmap和hashtable的区别
  • Java中final、finally、finalize的区别
  • Java中wait和sleep的区别
  • 常见的几种RuntimeException
  • 妞妞和仔仔

    博主

    博主:张孝帅

    简介:这很小小帅