【JavaSE】重载和重写

news2025/7/12 7:50:54

前言:

作者简介:爱吃大白菜1132

人生格言:纸上得来终觉浅,绝知此事要躬行

 

如果文章知识点有错误的地方不吝赐教,和大家一起学习,一起进步!

 

如果觉得博主文章还不错的话,希望三连支持!

目录

重载(Overload)

重写 (override)

重载和重写的区别 


重载(Overload)

        概念:简单的说,方法名字相同,参数列表不同,返回值可相同也可不同(无要求),当我们调用这个函数时,传参不同,编译器就会依照传参的类型,调用对应的方法。

代码示例:

public static int add(int x, int y) {
        return x + y;
    }
    public static double add(double x, double y) {
        return x + y;
    }
    public static double add(double x, double y, double z) {
        return x + y + z;
    }
 
    public static void main(String[] args) {
        int a=add(1, 2); // 调用add(int, int)
        System.out.println(a);
        double b=add(1.5, 2.5); // 调用add(double, double)
        System.out.println(b);
        double c=add(1.5,2.5, 3.5); // 调用add(double, double, double)
        System.out.println(c);
 
    }

 当满足以下条件时才构成方法重载:

  • 方法名必须相同
  • 参数列表必须不同(参数的个数不同、参数的类型不同、类型的次序必须不同)
  • 与返回值类型是否相同无关
  • 编译器在编译代码时,会对实参类型进行推演,根据推演的结果来确定调用哪个方法

重写 (override)

        概念:重写也称为覆盖。重写是子类对父类非静态、非private修饰,非final修饰,非构造方法等的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。

 代码示例:

class shape {
    public void draw() {
        System.out.println("画形状");
    }
}


class triangle extends shape {
    @Override//注解
    public void draw() {
        System.out.println("画三角形");
    }
}

class rectangle extends shape {
    @Override//注解
    public void draw() {
        System.out.println("画矩型");
    }
}

class dog extends shape {
    @Override
    public void draw() {
        System.out.println("画一个小狗 🐕");
    }
}

public class Test_11_13 {
    public static void main(String[] args) {
        shape[] s = {new triangle(), new rectangle(), new dog()};//向上引型

        for (int i = 0; i < s.length; i++) {
            s[i].draw();
        }
    }
}

代码运行结果:

观察代码可以发现,当我们调用draw()方法时,输出的信息并不是我们在父类中编写的draw()方法中的信息,而是我们在他子类中编写的同名的draw()方法输出的信息,这就是子类中的draw()方法对父类中的draw()方法进行了重写。

        重写的注意事项:

  •  子类在重写父类的方法时,必须与父类方法原型一致: 返回值类型 方法名 (参数列表) 要完全一致。
  • 被重写的方法返回值类型可以不同,但是必须是具有父子关系的。
  • 访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类方法被public修饰,则子类中重写该方 法就不能声明为 protected。
  • 父类被static、private修饰的方法、构造方法都不能被重写。
  • 重写的方法, 可以使用 @Override 注解来显式指定. 有了这个注解能帮我们进行一些合法性校验. 例如不小心将方法名字拼写错了 (比如写成 darw), 那么此时编译器就会发现父类中没有darw方法, 就会编译报错, 提示无法构成重写。

重载和重写的区别 

区别点重写 (override)重载(Overload)
参数列表一定不能修改必须修改
返回类型一定不能修改【除非可以构成父子类关系】可以修改
访问限定符一定不能做更严格的限制(可以降低限制)可以修改

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/5638.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python--敲击木鱼积累功德小项目(更新版(2))

前言&#xff1a;前几天上课闲着没事写了一个python敲击木鱼积累功德的小项目&#xff0c;当时纯粹就是写着玩&#xff0c;回顾一下鼠标事件的东西还记不记得&#xff0c;发现这个博客的点赞和收藏量还挺高的&#xff0c;我当时也没有把它当回事&#xff0c;后面也有很多人问怎…

11.11一些资源整理和总结

使用python读取tensorboard文件中的数据并写入到excel当中去能够代替Originlab的画图软件&#xff08;macos&#xff09;Mac款origin来了&#xff01;还不来看看&#xff01;ptflops&#xff1a;计算网络参数FLOPs的工具[github] 4 中方式计算 FLOPs&#xff08;知乎&#xff0…

栈和队列实现的思路和代码

栈和队列第一节----栈什么是栈实现栈的基本思路各个接口函数的实现初始化栈销毁栈压栈出栈返回栈顶元素栈的判空栈的大小第二节----队列什么是队列实现队列的基本思路各个接口函数的实现队列的初始化队列的销毁队列的插入队列的删除返回队头元素和队尾元素队列的判空队列的大小…

使用DESeq2进行转录组原始count标准化和差异分析

转录组测序完成后&#xff0c;一般我们会获得一个原始 read count表达矩阵&#xff0c;其中行是基因&#xff0c;列是样品。常用的差异分析工具包括limma、edgeR和DESeq2。DESeq2在测序领域使用最为广泛&#xff08;google scholar引用高达43284次&#xff0c;edgeR为28076次&a…

MYSQL索引查询问题质疑

前言 我们在写mysql查询语句的时候&#xff0c;尤其是经验不足的同学肯定会想要怎么使用索引加快查询&#xff0c;或是我这样写到底会不会命中索引。那么现在我就列举几个常见的索引查询问题进行简单说明一下。&#xff08;欢迎互怼&#xff01;&#xff09; 1.问&#xff1a…

小学生python游戏编程arcade----游戏界面按钮实现事件实现的三种方法

小学生python游戏编程arcade----游戏界面按钮实现事件实现的三种方法前言游戏界面按钮实现事件实现的三种方法1、按钮定义及事件3种方法1.1 按钮定义1.2三种事件引用方法1.2.1 类法1.2.2 事件方法2,自定义方法函数1.2.3 事件方法3,使用装饰器处理onclick事件1.3 效果图1.4 代码…

第十四届蓝桥杯校模拟赛详解+代码(一)

“须知少时凌云志&#xff0c;自许人间第一流” 鄙人11月八号有幸参加学校蓝桥杯校选拔赛&#xff0c;题型为5道填空题&#xff0c;5道编程题&#xff0c;总时间为4小时。奈何能力有限&#xff0c;只完成了5道填空和3道编程大题&#xff0c;现进行自省自纠&#xff0c;分享学习…

艾美捷细胞计数试剂盒-8(CCK-8),一步到位

艾美捷细胞计数试剂盒-8&#xff08;CCK-8&#xff09;&#xff1a;用于简单准确的细胞增殖和细胞毒性测定的比色试剂盒。 艾美捷细胞计数试剂盒-8&#xff08;CCK-8&#xff09;特点&#xff1a; 1、一步到位&#xff0c;不含放射性同位素的即用溶液 2、与[3H]-胸苷掺入试验…

分销商城平台哪个好_分享分销商城开发步骤

微信分销商城平台分为两种&#xff1a; 第一种是入驻到别人的微信分销商城平台里面&#xff0c;帮助分销别人发布的商品从而获得佣金。 第二种情况是自己公司开发的微信分销商城平台&#xff0c;然后招募分销者进行分销公司的产品。 对于大家来讲肯定是自己公司开发的微信分销商…

数据结构与算法_大数据处理_求topK的两种求解方法

这篇笔记记录求大数据topk的两种方法&#xff0c;分别是大小二叉堆法和快速分割法&#xff0c;下面依次详解这两种方法的过程。 1 大/小根堆法 利用大根堆过滤前top k小的数据**&#xff1b;小根堆过滤前top k大的数据**&#xff1b; 下面用大根堆求前k个小元素为例。 思想&…

Python 算法:学习二分法

二分法&#xff0c;一个看似简单&#xff0c;逻辑易懂的算法&#xff0c;但是初次接触可能会有很多坑&#xff01;主要是边界处理的问题。 下面以一个耳熟能详的案例来展开&#xff1a; 案例描述&#xff1a; 小B从1~100之间&#xff08;含边界值&#xff09;任意想一个数字&a…

Spring Security 在登录时如何添加图形验证码

前言 在前面的几篇文章中&#xff0c;登录时都是使用用户名 密码进行登录的&#xff0c;但是在实际项目当中&#xff0c;登录时&#xff0c;还需要输入图形验证码。那如何在 Spring Security 现有的认证体系中&#xff0c;加入自己的认证逻辑呢&#xff1f;这就是本文的内容&…

matplotlib简介

matplotlib是一款用于画图的软件&#xff0c;以下步骤建议在.ipynb中完成。 导包 你需要导入以下包&#xff1a; import matplotlib as mpl import matplotlib.pyplot as plt import numpy as np一个简单案例 matplotlib 在 Figure上绘制图形&#xff0c;每一个Figure会包含…

【附源码】Python计算机毕业设计手游账号交易系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

Java注解式开发

目录 1. ssm框架的搭建 1.1 maven项目的创建 1.2 导入所需的包到pom.xml文件中 1.3 导入数据库连接文件、日志文件、redis连接文件 1.3.1 数据库连接文件 1.3.2 日志文件 1.3.3 redis连接文件 1.4 导入spring-mybatis、spring-mvc、spring-base、spring-redis四种集成文…

改变自己 只需要两年

改变自己 只需要两年 https://v.douyin.com/rLDmdQK/ 可以快速浏览上面视频 今天分享的这篇文章是TED上的一篇演讲 希望对下定决心想改变的你一些帮助。 用两年时间证明你可以 两年时间不算多长&#xff0c;但与此同时&#xff0c;很多事情都能在两年内完成&#xff0c;你…

WinHex(三)

目录 一、新建简单卷 二、MBR作用与结构 一、新建简单卷 1.右键点击刚刚新建的虚拟磁盘&#xff0c;选择新建简单卷。我新建了两个一个是NTFS&#xff0c;一个是FAT32 2.我们在刚刚新建的虚拟磁盘中放入一张图片&#xff0c;打开WinHex,点击“打开磁盘”选项&#xff0c;打…

[野火]STM32 F103 HAL库开发实战指南笔记之简单外设总结

1、GPIO编程总结 使能 GPIO 端口时钟&#xff1b;初始化 GPIO 目标引脚为推挽输出模式&#xff1b;编写简单测试程序&#xff0c;控制 GPIO 引脚输出高、低电平。 这部分宏控制 LED 亮灭的操作是直接向 BSRR 寄存器写入控制指令来实现的&#xff0c;对 BSRR 低 16 位 写 1 输出…

大学生静态HTML网页源码 我的校园网页设计成品 学校班级网页制作模板 web课程设计 dreamweaver网页作业

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

从0实现线性回归

编码题&#xff1a; 按要求完成下面的内容 1请用python完成从0实现线性回归&#xff0c;尝试使用不同的训练参数&#xff08;学习率&#xff0c;迭代次数&#xff09;&#xff0c; 以及不同的评价方法&#xff08;MSE,MAE,RMSE,R2&#xff09;等。 2比较说明sklearn的线性模…