Java 面向对象—重载和重写/覆盖(面试)

devtools/2024/9/24 21:21:30/

重载和重写/覆盖:

重载(overload):

        Java重载是发生在本类中的,允许同一个类中,有多个同名方法存在,方法名可以相同,方法参数的个数和类型不同,即要求形参列表不一致。重载的好处,减轻了起名和记名的麻烦,通过个数和类型的不同来区分不同的函数。

        方法的重载只跟方法名和形参列表有关,与修饰符和返回值类型无关。

        形参列表不同:1.顺序不同;2.个数不同;3.类型不同。

基本数据类型传递的是该数据值本身,引用数据类型传递的是对象的引用,而不是对象本身;

重写(override):

        重写的参数列表,返回类型(可以是父子类),访问限定符,一般是不能修改的。

        重写也称覆盖。重写是子类对父类非静态,非private,非final方法的实现过程进行重新编写,返回值(JDK7以后,被重写的方法返回值类型可以不同,但是必须是具有父子关系的)和形参都不能改变。即外壳不变,核心重写。

        重写是动态绑定,即在编译时不能确定具体的调用方法,而在程序运行时,才能确定具体的被调用的方法。即:方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。

哪些方法可以被重写?哪些方法不可以被重写?

一:只能重写继承过来的方法。

二:final、static 的方法不能被重写。(父类被static、private final修饰的方法不能被重写。)

三:重写的方法必须有相同的参数列表。

四:重写的方法必须返回相同的类型。(子类在重写父类的方法时,一般必须与父类方法原型一致:修饰符 返回值类型 方法名(参数列表) 要完全一致)

五:重写方法不能使用限制等级更严格权限修饰符。(访问权限不能比父类中被重写方法访问权限更低)

六:重写后的方法不能抛出比父类中更高级别的异常。

七:可以在子类中通过 super 关键字来调用父类中被重写的方法。

八:构造方法不能被重写。(因为构造方法很特殊,而且子类的构造方法不能和父类的构造方法同名(类名不同),所以构造方法和重写之间没有任何关系。)


http://www.ppmy.cn/devtools/24958.html

相关文章

小猫咪邮件在线发送系统源码v1.1,支持添加附件

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 小猫咪邮件在线发送系统源码v1.1,支持添加附件 一款免登录发送邮件,支持发送附件,后台可添加邮箱,前台可选择发送邮箱 网站数据采取本地保存&…

Netty: NIO网络编程

文章目录 一、NIO介绍二、NIO原理三、Buffer1、Buffer原理介绍2、Buffer实现类3、示例4、NIO和BIO的比较 四、Channel1、介绍2、FileChannel介绍3、Buffer和Channel的注意事项 五、Selector六、Selector、Channel和Buffer关系 一、NIO介绍 NIO介绍 二、NIO原理 NIO有三大核心…

echarts开发技巧

tooltip 提示框组件相关的行为,必须引入提示框组件后才能使用。 tooltip: {trigger: axis,axisPointer: {type: cross,label: {backgroundColor: #6a7985,},},//为弹出层的value值增加百分号valueFormatter: function (value) {return value %}, }, tooltip.axi…

我们的手机是如何连接上网的?骨干网又是什么?

什么是骨干网(Backbone Network) 几台计算机连接起来,互相可以看到其他人的文件,这叫局域网。整个城市的计算机都连接起来,就是城域网。把城市之间连接起来的网就叫骨干网。 这些骨干网是国家批准的可以直接和国外连…

Android使用ProtoBuf 适配 gradle7.5 gradle8.0

ProtoBuf 适配 Gradle7.5 gradle-wrapper.properties 配置 distributionUrlhttps\://services.gradle.org/distributions/gradle-7.5-bin.zipProject:build.gradle: plugins {id com.android.application version 7.4.2 apply falseid com.android.library versio…

面试笔记——线程安全

sychronized的底层原理 Synchronized【对象锁】采用互斥的方式让同一时刻至多只有一个线程能持有【对象锁】,其它线程再想获取这个【对象锁】时就会阻塞住。 对象锁的互斥功能是由jvm提供的Monitor(由C语言实现)实现的,通过 java…

Go Web 开发【Gin 框架快速开发】

1、Gin Web 快速开发 1.1、环境准备 1.1.1、导入 gin 依赖 这里就叫 gin 依赖了,在 Goland 命令行中输入下面的命令: go get -u github.com/gin-gonic/gin 1.1.2、设置代理 如果下载失败,最好设置一下代理,在 cmd 命令行中输…

拦截pytorch算子,dump输入输出

拦截pytorch算子,dump输入输出 一.代码二.输出 希望dump出pytorch每个算子的输入输出,但pytorch普通的hook机制只能拦截module.以下提供一种方法可以拦截torch.add,torch.Tensor.add这类算子.原理是通过模板替换,劫持torch和torch.Tensor中的算子.遍历next_functions调用regist…