内容来源为:《孙卫琴面向对象编程》,本随笔简单总结,具体内容可参见概述第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. 更改SQL Server中默认备份文件夹

    当你安装SQL Server时,安装路径一般如下:C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL.在这个目录下也有数据文件的文件夹和备份文件的文 ...

  2. vim出现“E212: Can't open file for writing”的处理办法

    在使用vim 对文件或配置进行编辑的时候,在保存时发现当前用户没有写权限.又不想放弃当前编辑的内容,怎么办呢? 来自stackoverflow “For some reason the file yo ...

  3. centos7 安装SSH

    1.安装OpenSSH服务(CentOS系统默认安装了openssh)      yum install openssh-server -y 2.配置OpenSSH服务(默认的配置已可以正常工作) O ...

  4. Hadoop map任务数量的计算

    Hadoop中决定map个数的的因素有几个,由于版本的不同,决定因素也不一样,掌握这些因素对了解hadoop分片的划分有很大帮助, 并且对优化hadoop性能也很有大的益处. 旧API中getSpli ...

  5. linux查看占用内存多的进程

    update一个简单的方法 ps aux | sort -k4nr | head -10 ps -e  -o "%C  : %p : %z : %a"|sort -k5 -nr|h ...

  6. jmeter分布式环境

    搭建jmeter分布式环境     (1)确定分布式结构,即1台机器部署master.几台机器部署slave?     (2)将相同版本的jmeter分别拷贝到这几台机器     (3)修改maste ...

  7. NativeScript的开发体会

    上个月开始,国内的主流技术网站开始在推荐NativeScrpit,"js+xml写跨终端app"."原生体验挡不住",很多网站都拿这个当做宣传NativeScr ...

  8. VR与AR的发展趋势分析

    概要 你是否想象过与神秘的深海生物近距离接触?你是否梦想过穿戴钢铁侠那样的超先进科技装备成为超级英雄?你又是否幻想过与梦中的女神面对面的交流?这些可能在以前都只能是存在于脑海中的幻想,可是在如今有一项 ...

  9. C#中索引器的作用和实现。

    官方描述:索引器允许类或结构的实例就像数组一样进行索引.索引器形态类似于,不同之处在于它们的取值函数采用参数. 这一功能在创建集合类的场合特别有用,而在其他某些情况下,比如处理大型文件或者抽象有些资源 ...

  10. c# 线程的基本使用

    创建线程 线程的基本操作 线程和其它常见的类一样,有着很多属性和方法,参考下表: 创建线程的方法有很多种,这里我们先从thread开始创建线程 class Program { static void ...