前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【小家java】关于java中方法重载与方法重写的区别

【小家java】关于java中方法重载与方法重写的区别

作者头像
YourBatman
发布2019-09-03 14:58:36
7780
发布2019-09-03 14:58:36
举报


1、概述

这篇文章比较轻松,直接讲述一下java当中的方法重载和方法重写的区别。主要面向对象还是初学者,因为初学者经常弄混这两个概念性的问题。

2、栗子

一、重载 overloading,这个在JDK里可没有相关注解哦

  1. 方法重载是让类以统一的方式处理不同类型数据的一种手段。重载是一个类中多态性的一种表现。
  2. Java的方法重载,就是可以在类里定义多个同名的方法,但具有不同的参数和不同的定义(不同的参数列表)。调用方法时才决定最终调用哪个方法,这也是多态性的表现。这里推荐大家可以了解一下java当中的重载决策,可以参考我另外一篇博文中有说到过:List 的删除操作,你知道多少? 里面对remove重载解释的时候有介绍到,各位有空可以看看。 比如spring框架中BeanFactory.getBean()方法,就有大量的重载实现:
Object getBean(String name) throws BeansException;
<T> T getBean(String name, Class<T> requiredType) throws BeansException;

重载用得好,也可大大提高你的代码设计的向下兼容能力。

重载的返回值类型可以相同也可以不同

二、重写overriding。强烈建议如果是重写,请加上方法注解:@Override

  1. 父类(接口)与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding),@Override并不是必须的,但建议加上保持良好语意,也能静态检查
  2. 若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类
  3. 子类函数的访问修饰权限不能少于父类的; 有如下父类方法GenericService.test:
protected Object test(Object id) {
  return null;
}

我们复写可以这么来:

@Override
protected Object test(Object id) {
    return null;
}

//使用public修饰
@Override
public Object test(Object id) {
    return null;
}

//使用final修饰也可以
@Override
public final Object test(Object id) {
    return null;
}

//返回值用子类也行,这里用了user对象(用父类就不行了哟)
@Override
public final User test(Object id) {
    return null;
}

//但不能用private修饰了,因为private小于protected   **下面这个就是错的**
@Override
private User test(Object id) {
    return null;
}

备注:入参必须一模一样,类型也是。但返回值允许返回是父类的子类,访问权限可以比父类高。复写的方法还可额外 static 、final、 native 、 synchronized等修饰

另外,接口中如果存在继承,子接口也是可以@Override父接口的哟,这个在平常使用经常遇到,这样具体子接口就能有更好的语意了。

3、使用场景

处处都有

4、最后

若方法类型为priavte static final ,java采用静态编译,编译器会准确知道该调用哪个方法。因此本人建议,能private的方法尽量不要public,因为JVM能够对private方法进行静态编译,从而大大提高调用效率的。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年05月29日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、概述
  • 2、栗子
  • 3、使用场景
  • 4、最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档