哈工大软件构造复习——关于“重载”与“重写”

防扒链接:

写在前面

在复习软件构造课程的过程中,我对重载(Overload)与重写(Override)产生了不小的疑惑,因其名称的相似性,我时常会混淆二者的概念,因此特写下本篇博客以总结重载与重写的区别。

重写 即 “重新写一遍”。其实就是 在子类中把父类本身有的方法重新写一遍

子类继承了父类原有的方法,但 有时子类并不想原封不动的继承父类中的某个方法,所以在 方法名,参数列表,返回类型(除非子类中方法的返回值是父类中方法返回值的子类时) 都相同的情况下, 对方法体进行 修改或重写,这就是重写。 即外壳不变,核心重写!

要注意 子类函数的访问修饰权限不能少于父类的

例子如下:

public class Father {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Son s = new Son();
        s.sayHello();
    }

    public void sayHello() {
        System.out.println("Hello");
    }
}

class Son extends Father{

    @Override
    public void sayHello() {
        // TODO Auto-generated method stub
        System.out.println("hello by ");
    }

}

重写(Override)总结如下:

1.发生在父类与子类之间。
2.方法名,参数列表,返回类型(除过子类中方法的返回类型是父类中返回类型的子类)必须相同。
3.访问修饰符的限制一定要大于被重写方法的访问修饰(public>protected>default>private)。
4.重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。
例如: 父类的一个方法申明了一个检查异常 IOException,但是在重写这个方法的时候不能抛出 Exception 异常,因为 Exception 是 IOException 的父类,抛出 IOException 异常或者 IOException 的子类异常。

重载:在一个类中,同名的方法如果有不同的参数列表( 参数类型不同、参数个数不同甚至是参数顺序不同)则视为重载。重载是多态的一种实现方式。

重载对 返回类型没有要求,可以相同也可以不同,但 不能通过返回类型是否相同来判断重载

每个重载的方法(或者构造函数)都必须有一个 独一无二的参数类型列表

例子如下:

public class Father {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Father s = new Father();
        s.sayHello();
        s.sayHello("wintershii");

    }

    public void sayHello() {
        System.out.println("Hello");
    }

    public void sayHello(String name) {
        System.out.println("Hello" + " " + name);
    }
}

重载(Overload)总结如下:

1.重载Overload是一个类中多态性的一种表现。
2.重载要求同名方法的参数列表不同(参数类型,参数个数甚至是参数顺序)。
3.重载的时候,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。

参数列表 一定不能修改 必须修改 返回类型 一定不能修改 可以修改 发生位置 子类与父类之间

同一个类

或子类与父类之间

方法的重写和重载都是 实现多态的方式

区别在于 重写实现的是 运行时的多态性,而 重载实现的是 编译时的多态性

Original: https://www.cnblogs.com/kalesky/p/16357686.html
Author: 何以牵尘
Title: 哈工大软件构造复习——关于“重载”与“重写”

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/593539/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Redis概述及基本数据结构

    Redis 是一个基于内存的键值型 NoSQL 数据库 特征: 键值型:value 支持多种不同数据类型,功能丰富 单线程:每个命令具备原子性 延迟低、速度快: 基于内存、IO多路…

    Java 2023年6月9日
    077
  • java使用POI操作XWPFDocument 生成Word实战(一)

    注:我使用的word 2016功能简介:(1)使用jsoup解析html得到我用来生成word的文本(这个你们可以忽略)(2)生成word、设置页边距、设置页脚(页码),设置页码(…

    Java 2023年6月7日
    099
  • spring整合mybatis

    <dependencies> <dependency> <groupid>mysql</groupid> <artifacti…

    Java 2023年6月15日
    091
  • 【校招VIP】[产品][211][5分]项目缺少产品逻辑

    关注【校招VIP】公众号,回复【简历】,添加校招顾问,即可获取简历指导! 本份简历是一位21届211产品同学的简历,简历评分5分。 一、学员简历 二、指导意见这份简历的版式没有问题…

    Java 2023年6月5日
    069
  • 利用Redis对批量数据实现分布式锁

    在开发的 &#x6536;&#x5165;&#x7ED3;&#x8F6C;&#x5E73;&#x53F0;&#x754C;&…

    Java 2023年6月7日
    070
  • Spring(十三):设计模式——代理模式

    Spring中AOP的底层原理就是动态代理模式,所以我们在这里对代理模式进行学习。 一、代理模式 1.什么是代理 代理,顾名思义,就是一个人代替另一个人去做他需要做的事情。代理是一…

    Java 2023年6月15日
    071
  • Jetpack架构组件学习(4)——APP Startup库的使用

    最近在研究APP的启动优化,也是发现了Jetpack中的 App Startup库,可以进行SDK的初始化操作,于是便是学习了,特此记录 原文:Jetpack架构组件学习(4)——…

    Java 2023年6月13日
    0104
  • MybatisPlus 快速入门

    MybatisPlus 1.简介 官网:https://baomidou.com/pages/24112f/#特性 特性 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如…

    Java 2023年6月9日
    086
  • Java 14中对switch的增强,终于可以不写break了

    面对这样的 if语句,你是不是很难受呢? if (flag == 1) { log.info("didispace.com: 1"); } else if (f…

    Java 2023年6月9日
    086
  • IDEA 设置快捷键上下整行

    快捷键上下整行 点击新增快捷键 posted @2022-09-16 20:25 一蓑烟雨任平生。。 阅读(8 ) 评论() 编辑 Original: https://www.cn…

    Java 2023年6月7日
    085
  • .Net Core下DllImport使用方法及扩展

    引言​ 在有时候的开发过程中,我们会遇到需要调用系统的API,不巧的是.Net Core可能没办法为我们提供相关的调用方式。那需要如何才能解决这个问题呢?​ 这时候我们就可能会考虑…

    Java 2023年6月15日
    087
  • 聊聊消息中心的设计与实现逻辑

    厌烦被消息打扰,又怕突然间的安静; 一、业务背景 微服务的架构体系中,会存在很多基础服务,提供一些大部分服务都可能需要的能力,比如文件管理、MQ队列、缓存机制、消息中心等等,这些服…

    Java 2023年6月15日
    067
  • 动态规划算法(DP,Dynamic Programming)

    动态规划算法(DP,Dynamic Programming) 文章目录 动态规划算法(DP,Dynamic Programming) 前言 一、递归到DP的一般转化方法 二、DP解…

    Java 2023年6月5日
    087
  • npm常用命令及参数总结

    NPM几个常用命令和参数的意思: npm&#xA0;<span class="hljs-keyword"><span class=&q…

    Java 2023年6月5日
    071
  • js 轮询停止

    clearInterval() posted @2022-09-12 19:36 简单易懂 阅读(14 ) 评论() 编辑 Original: https://www.cnblog…

    Java 2023年6月5日
    0130
  • Spring Cloud认知学习(一):Spring Cloud介绍与Eureka使用

    Spring Cloud的介绍 微服务的介绍 Spring Cloud出现的原因: 常见场景: 微服务的优劣势: Spring Cloud版本问题 版本介绍 与Spring Boo…

    Java 2023年5月30日
    0154
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球