内容来源为:《孙卫琴面向对象编程》,本随笔简单总结,具体内容可参见概述第6章,写的挺清晰;

一. 重载(Overload)

  1. 有时候类的同一种功能有多种实现方式,到底采用哪种实现方式,取决于调用者给定的参数(如构造函数就是一种例子);

  2. 对于类的方法(包括从父类中继承的方法),如果有两个方法的方法名相同,但参数不一样,那么可以说,一个方法是另一个方法的重载方法。

  3. 重载方法必须满足以下条件:

   (1)方法名相同;

   (2)方法的参数类型、个数、顺序至少有一项不同;

   (3)方法的返回值类型可以不同;

   (4)方法的修饰符可以不同;

  4. 在一个类中不允许定义两个方法名相同,并且参数签名也完全相同的方法。因为假如存在这样的方法,Java虚拟机在运行时就无法决定到底执行哪个方法,参数签名是指参数的    类型、个数和顺序。

二. 重写(OverWrite)

  1. 如果在子类中定义的一个方法,其名称、返回值类型及参数签名正好与父类中的某个方法的名称,返回值类型及参数名相匹配,那么可以说,子类的方法重写了(覆盖)父类的方法;

  2. 重写方法必须满足以下约束条件:

    (1)子类的方法的名称、参数签名和返回值类型必须与父类方法的名称、参数签名及返回值类型一致;

    (2)子类在重写父类方法时,重写方法不能缩小父类方法的访问权限(原因是和多态机制冲突,详细内容可看《Java面向对象编程》);

    (3)子类方法不能抛出比父类方法更多的异常;子类方法抛出的异常必须和父类方法抛出的异常相同,或者子类方法抛出的异常是父类方法抛出的异常的子类(原因是和多态机制冲突,详细内容可看《Java面向对象编程》);

    (4)方法重写之存在于子类和父类之间(包括直接父类和间接父类),在同一个类中,方法只能重载不能重写。

    (5)父类的静态方法不能被子类重写为非静态方法;

    (6)子类可以定义与父类的静态方法同名的静态方法,以便在子类中隐藏父类中的静态方法;

    (7)父类的非静态方法不能被子类重写为静态方法;

    (8)父类中的私有方法不能被子类重写;原因:子类方法重写父类方法的前提是,子类必须能继承父类的特定方法,因此父类中的私有方法不能被子类继承,也就无法构成重写,即使在形式上符合重写的规范,也不能算得上重写;

    (9)父类的抽象方法可以被子类通过两种方式重写,一是实现父类的抽象方法,二是重新声明父类的抽象方法。

    (10)父类的非抽象方法可以被重写为抽象方法。

Java之重载(Overload)与重写(Overwrite)总结的更多相关文章

  1. 方法的覆盖(override)、重载(overload)和重写(overwrite)

    body { background-color: white } .markdown-body { min-width: 200px; max-width: 760px; margin: 0 auto ...

  2. 【Java】重载(Overload)与重写(Override)

    方法的语法 修饰符 返回值类型 方法名(参数类型 参数名){ ... 方法体 ... return 返回值; } 重载(overload) /** * 重载Overload: * 同一个类中,多个方法 ...

  3. Java面试 - 重载(Overload)和重写(Override)的区别?

    1.重载是在同一个类中,可声明多个同名方法,但参数列表不同(参数顺序,个数,类型).而重写是在子类中,对从父类中继承的方法进行重新编写,但方法名,参数列表(参数顺序,个数,类型),返回值类型必须保持一 ...

  4. JAVA中继承时方法的重载(overload)与重写/覆写(override)

    JAVA继承时方法的重载(overload)与重写/覆写(override) 重载-Override 函数的方法参数个数或类型不一致,称为方法的重载. 从含义上说,只要求参数的个数或参数的类型不一致就 ...

  5. C++ 重载(overload)、重写(overrride)、重定义(redefine)总结

    引自:http://www.189works.com/article-42111-1.html 先来看几个概念: 重载(overload),重写(override,也称覆盖), 重定义(redefin ...

  6. Java方法多态性——方法的重载Overload和重写Override

    方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式. 重写(Override) 重写是 ...

  7. Java 方法重载与方法重写

    方法重载(Overload): 1.在同一个类中 2.方法名相同 3.参数的个数或类型不同 4.与方法的返回类型无关 5.与方法的修饰符无关 方法重写(Override): 方法重写必须是子类继承父类 ...

  8. 抽象方法(abstract method) 和 虚方法 (virtual method), 重载(overload) 和 重写(override)的区别于联系

    1. 抽象方法 (abstract method) 在抽象类中,可以存在没有实现的方法,只是该方法必须声明为abstract抽象方法. 在继承此抽象类的类中,通过给方法加上override关键字来实现 ...

  9. java 方法重载overload

    一.方法的重载 方法名一样,但参数不一样,这就是重载(overload). 所谓的参数不一样,主要有两点:第一是参数的个数不一样,第二是参数的类型不一样.只要这两方面有其中的一方面不一样就可以构成方法 ...

  10. Java 方法重载 (Overload)

    对重载 (Overload) 的认识 为什么要用方法重载: 对于功能类似的方法来说,因为参数列表不一样,如果定义不同名称的方法,太麻烦且难以记忆. 为了解决这个问题,引入方法的重载. 重载的定义: 多 ...

随机推荐

  1. lnmp 一键安装包 nginx配置tp5 phpinfo模式 隐藏index.php

    tp5 url 线上访问 在nginx 上 出现404错误 那是因为pathinfo没有被支持 修改如下:找到   /usr/local/nginx/config/vhost/项目名.config s ...

  2. Word2007发布博客

    目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...

  3. PHP(六)PHP和HTML混合的一种形式

  4. java.util.concurrent.locks.LockSupport (讲得比较细)

    转自:   https://my.oschina.net/readjava/blog/282882   摘要: 要学习JAVA中是如何实现线程间的锁,就得从LockSupport这个类先说起,因为这个 ...

  5. DELPHI移动端支付宝支付

    Delphi XE7 Android 应用接入支付宝SDK的方法 1      应用场景和准备工作: 采用XE系列开发的android apps. apps中需要集成支付宝的支付能力. 支付到指定的商 ...

  6. 获取web项目中的webroot目录路径

    备忘,一段代码: @Override public void init(FilterConfig arg0) throws ServletException { // TODO Auto-genera ...

  7. IIS 8 nodejs + iisnode 配置

    最近再Server 2012 + IIS 8 中配置NodeJS 运行环境,具体配置过程就不细说了(随便搜搜一堆),安装完nodejs 和 iisnode 之后,出现一个报错,如下: The iisn ...

  8. spark-streming 中调用spark-sql时过程遇到的问题

    在spark-streming 中调用spark-sql时过程遇到的问题 使用版本:spark-2.1.0 JDK1.8 1. spark-sql中对limit 的查询结果使用sum() 聚合操作不生 ...

  9. .Net 图片缩略图上传通用方法

    日常开发中,经常碰到图片上传的需求,尤其在商城系统开发的时候,商品列表商品图片展示如果使用高清原图,由于高清原图比较大,加载原图时间会大大增加,直接导致系统性能底下,用户体验不好,并发量高的时候直接就 ...

  10. SharePoint Caml Query 使用

    需要注意的是: 再使用ListQueryWebPart部件时,默认查看的list列表会出现乱码的情况,需要开启服务器呈现模式,如图: 特此记录一下