Java方法覆盖与方法重载

article/2025/10/3 21:12:33

Ps:括号中的内容为自身理解,看到可以略过。本人喜欢想些乱七八糟的东西。


类继承:子类继承父类的状态和行为,同时也可以具有自己的特征。

(简单来讲,就是基因(非private)继承,同时自己经过环境变异增强得到自己独有的(自己定义的方法和变量))

 

方法覆盖也称为重写,即在子类为父类的同名方法提供一个不同的实现(必须有继承关系)。

(类似于父亲数学好,当了数学老师,儿子数学好,当了经济学家)maybe?

重写特征:

1、重写的方法必须与原方法有相同的方法名、参数列表和返回值类型。(数学好当然就是数学好了,怎么能变成肌肉大呢)

2、final类型无法重写,因为final类型为常值,一但赋值便不能改变。(不可遗传基因突变?自带的)

3、private类型无法重写,重写了也无关。(你无法继承父亲独有的特点,继承不了咋另作他用,重写了也是你模仿的)

4、父类的static可以被继承,但不能被重写。如果父类中的方法为静态,而子类重写了完全一样的方法,父类的方法就会被隐藏。(长江后浪推前浪)但父类中隐藏的static仍然可以用“类名.方法名”调用。

如果父类是static,子类不是。但是满足重写条件,此时会出现编译错误。(编不下去了,理解不了就硬背吧)

5、重写的方法的访问权限不能比原方法低,但是可以高。

6、重写抛出的异常的范围不能比原方法更多,但是可以更少。

7、发生在运行阶段。

父类代码:

package example.csdn;public class Father {//父类public char last_name;//姓private String first_name;//名public final String vehicle;//家族汽车public Father() {last_name = '张';first_name = "三十";vehicle = "红旗";}public Father(char Lname,String Fname,String Carname) {last_name = Lname;first_name = Fname;vehicle = Carname;}public void called() {System.out.println("My name is "+first_name+last_name);}public void GoodAtMath() {System.out.println("I'm good at math,So i am math teacher");}
}

 子类代码:

package example.csdn;public class Son extends Father{private String Son_first_name;public Son() {Son_first_name = "四十";}@Overridepublic void called() {System.out.println("My name is "+Son_first_name+last_name);}public void drive() {//vehicle = "五菱宏光";//出错System.out.println("I'm going for a ride in my"+vehicle);}public static void listen(String music) {System.out.println("I'm bored listening to "+music);}}

afe9795c8a394590816ff41eaa035dc1.png

很明显,你爹的名字都敢用,肯定错了。

abbf54d0f1564cc8b6b2a536dfef6af3.png

自己搞个名字,这样才可以

52be5abd9d834f7e8e06e0094cc837a8.png

继承过来的明明时红旗,怎么能是五菱宏光呢。很明显,final定义的常量类型可以被继承,但是不能被修改。

46f11a40ba3f49b0bf449ea9cc0fbc98.png

 

 这里的Father f = new Son() 相当于一个子类转父类的向上转型, 即指父类 Father 引用 f 指向子类 Son 对象,这时候因为使用的是父类引用,所以方法都是以父类为主,如果子类对父类方法进行重写的话,这时候调用的会是子类的。

在这里,父类的方法被重写,所以f.called和s.called的结果都是子类重写后的方法结果而static类型的listen方法并不能被重写,所以f.listen使用的还是父类的static方法,而s.listen 用的就是子类自己定义的 static 方法。
 
 

方法重载,即 一个类中定义多个名称相同但参数不同的方法(发生在同一个类当中)。

重载特征:

1、方法名必须相同。(否则会报错)

2、方法的参数列表必须不同。(参数的个数、类型、顺序不同,满足其中一个即可,也可以同时满足)

3、方法的返回值的类型不做要求。

4、重载发生在编译器编译阶段,编译器根据参数的不同调用相应的方法。

5、调用重载的方法时还可能发生自动类型转换。

6、可以声明新的或更广的检查异常。

f55e5d194d994586ba2f43c014558c2c.png

这里是构造方法重载,其他方法重载与这个类似。

(方法重载,相当于用另一个号介绍自己吧,表面上是个学生,实际上是个🐭🐭?)

 
重写和重载的区别:

1、重写只能用于子类,而重载用于同一类中。

2、重写的方法名、参数列表、返回值类型必须相同,重载的参数列表必须不同,返回值类型任意。

3、重写对方法的访问权限和抛出异常有特殊的要求,而方法的重载没有这方面的限制。

4、父类的方法只能被同一子类重写一次,而一个方法可以被重载很多次。

5、重写是运行时的多态,重载是编译时的多态。

6、重写与重载都与参数名无关。

 

 

 

 

 

 

 

 

 


http://chatgpt.dhexx.cn/article/RyTldwYj.shtml

相关文章

什么叫java方法重载?

方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。调用重载方法时,Java编译器能通过检查调用的方法的参数类型和个数选择一个恰当的方法。方法重载通常用于创建完成一组任务相似但参数的类型或参数的个数不同…

Java 方法重载习题答案

基础题目 第一题:语法练习 语法点:方法定义,方法重载 按步骤编写代码,效果如图所示: 编写步骤: 定义类 Test1,类中定义 main方法,定义int类型a为10, b为10.定义printNum方法,参数为(int iVar, int iVar…

java中方法重载

重载的三个要求:1.在同一个类中,2.同一个方法名(不用在意返回值),3.不同的参数(参数个数,参数类型) 使用重载可以记住一个方法名,使用不同形参,完成不同类似的…

JAVA方法重载优先级

JAVA方法重载优先级 该方法正常执行,没有报空指针异常,是因为调用了,String类中的如下方法: 由于图一valueOf方法中传入的参数为Object类型,所以调用了该方法。 接下来看上面的方法执行结果,报了空指针异…

ROS学习笔记(一)#ROS系统及RoboWare的安装

0.前言 本人目前研一在读,学习ROS机器人也有半年多了,开此博客决定把ROS学习从新捋一遍.目前使用Ubuntu 16.04 ROS-Kinetic。 1.ROS安装 电脑选择这个教程…

ubuntu18.04 安装 roboware-studio

RoboWare Studio是一个ROS集成开发环境。与ROS匹配性比起其他IDE更好,可以用它开发 ROS更加简单、并且在官网ros wiki中有详细的使用教程。本文主要是在Ubuntu18.04中安装RoboWare Studio。 1.输入指令安装必要的编译程序必须软件包 sudo apt-get install build-es…

ROS集成开发环境 --- RoboWare(安装及学习笔记)

后附 RoboWare中文教程网盘链接 DesignerStudioViewer RoboWare Studio是什么 v1.2.0 32位 debv1.2.0 64位 debv1.2.0 使用手册 pdf RoboWare Studio是一个ROS集成开发环境.使ROS开发更加直观、简单,并且易于操作.可进行ROS工作空间及包的管理,代码编…

ROS学习系列(一):ubuntu16.04下安装 ROS IDE RoboWare Studio 教程

1.下载RoboWare Studio安装包 不要信从官网下载http://www.roboware.me/#/home 这个网站压根就进不去。 从github上下载安装包,链接https://github.com/TonyRobotics/RoboWare/tree/master/Studio,参考手册这个网站也有。 注意版本: 例如目…

在Ubuntu18.04中安装ROS IDE RoboWare Studio 和Visual Studio Code

安装ROS IDE 前言一、安装RoboWare Studio二、安装Visual Studio Code参考文献 前言 一款好的开发工具可以是开发效率提升,ROS官方推荐了常用的ROS开发环境http://wiki.ros.org/IDEs,下文将介绍安装我常用的两种开发环境。 一、安装RoboWare Studio 首先&#xf…

ROS集成开发环境IDE----RoboWare开源

RoboWare中文官网: http://cn.roboware.me/#/home github: https://github.com/TonyRobotics/RoboWare-Studio 目前主要有三款软件产品:DesignerStudioViewer,如下 . . . ---- RoboWare Studio - Open Source RoboWare Studio…

Roboware Studio下载、安装、及解决办法

RoboWare官网:http://www.roboware.me/#/home 如果没有VPN我这里有资料链接: https://pan.baidu.com/s/17q5U1HlGGL0inqcxLuELmw 提取码: upav 选择合适的版本下载,注意32位与64位之分。下载完以后先不要着急安装,为了更好地使用RoboWare St…

Robotium

本文内容:基于Android Studio 的Android自动化测试框架Robotium的开发 版权声明:本文为原创文章,未经允许不得转载 博客地址:http://blog.csdn.net/kevindgk 简介 RobotiumRobotium Recorder 一白盒测试 创建Android项目安装Rob…

ROS笔记(4) RoboWare Studio 的安装

ROS笔记(4) RoboWare Studio 的安装 1. RoboWare Studio的下载2. RoboWare Studio的安装3. RoboWare Studio的开启4.打开工作区1. RoboWare Studio的下载 RoboWare Studio是ROS的一款IDE,基于微软开源的VSCode开发,功能比较强大,使得开发更加快速、简单,是目前较好用的R…

RoboWare Studio入门教程(一)

部分参考:https://blog.csdn.net/qq_41450811/article/details/80305846 应该从ROS的通信机制开始说起,话题通信机制和服务通信机制,还有一种参数管理机制本次不予展开。 本次先以服务通信机制为例子。 服务(Service&#xff0…

RoboWare安装教程

RoboWare Studio安装教程 通常ROS的程序都是用C和Python开发的,为了提高开发的效率,我们建议用IDE来写代码。目前在Ubuntu上已经有许多IDE支持ROS开发,比如Eclipse、Qt Creator。不过这些IDE配置起来会比较麻烦,推荐一款适配ROS的…

ROS IDE - RoboWare Studio 安装与使用教程

1. 安装: 去官网 http://www.roboware.me/#/ 下载安装包后正常安装即可。 2. 配置: 安装后会提示git不是最新版本,依次执行下面的命令可更新至最新版: git --version sudo add-apt-repository ppa:git-core/ppa sudo apt-get u…

ROS IDE —— RoboWare Studio

RoboWare Studio是ROS的一款IDE,但是它的功能又比较强大,使得开发更加快速、简单。 要安装RoboWare Studio,首先确保你的Ubuntu版本是14.04或者16.04版本,目前只支持这两个版本,并且完成了ROS的安装和配置&#xff0c…

RoboWare Studio的安装

RoboWare是什么? RoboWare Studio是国人开发的一个ROS系统IDE(集成开发环境),基于微软开源的VSCode内核开发(因此这个界面跟VSCode非常像),功能比较强大,使得开发更加快…

RoboWare Studio安装教程

RoboWare官网:http://www.roboware.me/#/home 选择合适的版本下载,注意32位与64位之分。下载完以后先不要着急安装,为了更好地使用RoboWare Studio,我们需要事先安装两个比较常用的插件。 1、为了支持Python调试功能,…

Roboware Studio教程 (ROS kinetic)

RoboWare Studio是一个ROS集成开发环境。它使 ROS开发更加直观、简单、并且易于操作。可进行ROS工作区及包的管理、代码编辑、构建及调试。 下载链接:https://pan.baidu.com/s/1D169dFyf2OD3SFBZVZy3pQ 密码:3iuk 准备 安装前,请查看系统…