牛客网Java刷题知识点之方法覆盖(方法重写)和方法重载的区别

 

   

  不多说,直接上干货!

 

 

https://www.nowcoder.com/ta/review-java/review?query=&asc=true&order=&page=6

 

 



方法重写的原则:

  1. 重写方法的方法名称、参数列表必须与原方法的相同,返回类型可以相同也可以是原类型的子类型(从Java SE5开始支持)。
  2. 重写方法不能比原方法访问性差(即访问权限不允许缩小)。
  3. 重写方法不能比原方法抛出更多的异常。
  4. 被重写的方法不能是final类型,因为final修饰的方法是无法重写的。
  5. 被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行重写。
  6. 被重写的方法不能为static。如果父类中的方法为静态的,而子类中的方法不是静态的,但是两个方法除了这一点外其他都满足重写条件,那么会发生编译错误;反之亦然。即使父类和子类中的方法都是静态的,并且满足重写条件,但是仍然不会发生重写,因为静态方法是在编译的时候把静态方法和类的引用类型进行匹配。
  7. 重写是发生在运行时的,因为编译期编译器不知道并且没办法确定该去调用哪个方法,JVM会在代码运行的时候作出决定。

 

方法重载的原则:

  1. 方法名称必须相同。
  2. 参数列表必须不同(个数不同、或类型不同、参数类型排列顺序不同等)。
  3. 方法的返回类型可以相同也可以不相同。
  4. 仅仅返回类型不同不足以成为方法的重载。
  5. 重载是发生在编译时的,因为编译器可以根据参数的类型来选择使用哪个方法。

 

 

重写和重载的不同:

    1. 方法重写要求参数列表必须一致,而方法重载要求参数列表必须不一致。
    2. 方法重写要求返回类型必须一致(或为其子类型),方法重载对此没有要求。
    3. 方法重写只能用于子类重写父类的方法,方法重载用于同一个类中的所有方法。
    4. 方法重写对方法的访问权限和抛出的异常有特殊的要求,而方法重载在这方面没有任何限制。
    5. 父类的一个方法只能被子类重写一次,而一个方法可以在所有的类中可以被重载多次。
    6. 重载是编译时多态,重写是运行时多态。

 

方法重写  发生在子类和父类之间,具体实现是子类对父类中一个可访问(Private修饰的方法不可被继承)方法的重写,保证其方法名、参数个数,参数类型不变。
方法重载发生在一个类中,具体表现为多个方法具有相同的方法名,但其参数个数或参数类型各不相同。记住与返回值类型无关。


 

 

 

 

 

 

帮助简单记忆:

  从定义上区分;

    重载在一个类里面,方法名相同,方法参数不同。

    重写在子类父类之间,子类去重写父类,方法名相同,方法参数相同。

 

  重写的两同两小一大:

    方法名相同、方法参数相同。

    它的返回类型小于等于父类的,它抛出的异常小于等于父类的。

  (返回类型,比如返回的是Person这个类,那我如果返回Person的子类,不就是比它小吗 )

    它的访问权限大于等于父类的。

    重写的时候 一大两小两同 方法名、参数相同,返回类型、异常范围小于等于父类的,访问权限大于等于父类的

 

 

 

  重载在编译期绑定,在编译的时候,编译器根据它参数的类型来决定说我绑定哪个方法。

  重写在运行期绑定,它是在运行时根据这个引用变量所指向的实例对象来决定我调用哪个实例对象的方法。

 

  重写(覆盖)是子类对继承的父类的方法,要求重写的方法名,参数,返回类型(可以是子类型)均相同。且访问权限不能小于父类中的访问权限,不能抛出更多的异常。是运行时多态。

   重载是一个类中有多个名字相同的方法,但是他们的参数类型不用,返回值可以不同(但是仅仅返回值不同不能进行重载)。是编译时多态。

 

 

  方法的重载指在同一个类中,对于同一个方法名的方法提供不同的参数表和返回值。

  方法的覆盖指子类重新定义父类的方法,重写的方法和父类的方法有同样的方法名、参数表、返回值。需要被覆盖的方法一般不限定其范围。

 

 

      

 

转载于:https://www.cnblogs.com/zlslch/p/7414017.html

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

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

相关文章

7-26 Windows消息队列

7-26 Windows消息队列(25 分) 消息队列是Windows系统的基础。对于每个进程,系统维护一个消息队列。如果在进程中有特定事件发生,如点击鼠标、文字改变等,系统将把这个消息加到队列当中。同时,如果队列不是空…

java for循环遍历解释,三种for循环遍历

import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class For{public static void main(String[]args) {//new一个集合对象List alListnew ArrayList();alList.add(1);//自动转成IntegeralList.add("abc");alList.add(a);//一般f…

AngularJS的ng-repeat显示属性名和属性值

代码下载&#xff1a;https://files.cnblogs.com/files/xiandedanteng/AngularJSAuthorRepeat.rar 代码&#xff1a; <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html ng-app&qu…

最小的JavaFX演示文稿(在JavaFX中)

如果您想进行有关JavaFX的演示&#xff0c;那么使用JavaFX本身进行演示非常方便。 这样&#xff0c;您无需离开演示文稿就可以轻松显示示例。 这是一个非常简单的示例。 在NetBeans中&#xff0c;设置一个新的JavaFX项目“ New Project”->“ JavaFX”->“ JavaFX Applic…

2018.2.28(延迟加载和缓存)

1.延迟加载 编写配置 测试类 2.侵入式延迟 3.深度延迟 4.一级缓存 5.二级缓存 配置 测试类 转载于:https://www.cnblogs.com/xu06123/p/8483245.html

java 加密解密编程,java 加密解密容易实现

当前位置:我的异常网 编程 java 加密解密容易实现java 加密解密容易实现www.myexceptions.net 网友分享于&#xff1a;2013-10-27 浏览&#xff1a;3次java 加密解密简单实现加密算法有很多种&#xff1a;这里只大约列举几例&#xff1a;1:消息摘要&#xff1a;(数字指纹)&a…

小爬麦子学院教师

任务描述&#xff1a;将麦子学院指定网页下教师信息&#xff08;姓名&#xff0c;职称&#xff0c;介绍信息&#xff09;爬取下来并保存到数据库。 1.页面分析&#xff1a; 2.代码&#xff1a; mydb.py: #!/usr/bin/env/python #coding:utf-8 操作数据库import MySQLdb as dbcl…

MongoDB:使用Spring数据添加计数器

在我的博客应用程序中&#xff0c;您可以查看任何用户的个人资料&#xff0c;例如&#xff0c;我的个人资料页面将为http://www.jiwhiz.com/profile/user1&#xff0c;“user1”是我在系统中的用户ID。 在MongoDB中&#xff0c;每个文档对象都会有一个唯一的标识符&#xff0c;…

vue2+node+mysql demo总结

1.App.vue中&#xff1a; 2.在main.js中的new vueRouter里设置mode:history或者hash &#xff1b;设置{path:/,redirect:home}默认进入的路径&#xff1b;设置linkActiveClass改变路由激活时的class名&#xff1b;也定义全局基本样式和全局过滤器等&#xff0c;例如&#xff1a…

常见文本样式及标签

本文设计到常见对文档的处理样式&#xff0c;和块&#xff0c;行标签的特点。 没用什么重要内容&#xff0c;只是自己的一些知识点的回忆&#xff0c;对以前知识的一个梳理过程&#xff0c;望某懒虫加油&#xff01;&#xff01;&#xff01; <!DOCTYPE html> <html l…

寻找内存泄漏:一个案例研究

一周前&#xff0c;我被要求修复一个有内存泄漏问题的webapp。 考虑到过去两年左右的时间里我已经看到并修复了数百个泄漏&#xff0c;我想这有多难。 但是事实证明这是一个挑战。 12小时后&#xff0c;我发现该应用程序中不少于5个漏洞&#xff0c;并设法修复了其中4个漏洞。…

matlab中求积函数,MATLAB软件及高斯勒让德求积公式MATLAB软件及高斯勒让德求积公式.doc...

MATLAB软件及高斯勒让德求积公式MATLAB软件及高斯勒让德求积公式数 值 分 析 课 程 实 验 报 告2012—2013学年度 第二学期系别&#xff1a;数学与计算机科学学院实验课程数值分析班 级10级数学与应用数学2班学 号05姓 名杜宁峰指导教师陈耀庚实验题目学习编写高斯-勒让德计算程…

[HNOI2015] 落忆枫音

题目描述 「恒逸&#xff0c;你相信灵魂的存在吗&#xff1f;」 郭恒逸和姚枫茜漫步在枫音乡的街道上。望着漫天飞舞的红枫&#xff0c;枫茜突然问出这样一个问题。 「相信吧。不然我们是什么&#xff0c;一团肉吗&#xff1f;要不是有灵魂......我们也不可能再见到你姐姐吧。」…

border,padding,margin盒模型理解

安静的敲着键盘&#xff0c;已势不可挡的姿势逼近php&#xff0c;我想我是一个幸福的人&#xff0c;未来不可期&#xff0c;做好现在&#xff0c;偶尔写着自己能看懂的API,慢慢悠悠的回味一下前端基础知识。 本文盒模型理解。 <!DOCTYPE html> <html lang"en&qu…

我的Java自定义线程池执行器

ThreadPoolExecutor是Java并发api添加的一项功能&#xff0c;可以有效地维护和重用线程&#xff0c;因此我们的程序不必担心创建和销毁线程&#xff0c;而将精力放在核心功能上。 我创建了一个自定义线程池执行程序&#xff0c;以更好地了解线程池执行程序的工作方式。 功能性…

php中mysqlstat函数,PHP函数mysql_stat介绍

&#xfeff;定义和用法mysql_stat() 函数返回 MySQL 服务器的当前系统状态。如果成功&#xff0c;则该函数返回状态。如果失败&#xff0c;则返回 false。语法mysql_stat(connection)提示和注释注释&#xff1a;mysql_stat() 目前只返回 uptime、threads、queries、open table…

全选、全部选、反选、提交

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Document</title> </head> <body><form><input type"checkbox" name"items" value"足球"&…

Java中的模板方法设计模式

模板方法模式是一种行为设计模式&#xff0c;它为算法提供了基础方法&#xff0c;称为模板方法&#xff0c;该方法将其某些步骤推迟到子类中&#xff0c;因此算法结构相同&#xff0c;但某些步骤可以由子类根据上下文重新定义。 模板是指预设格式&#xff0c;例如HTML模板&…

android adb源码分析(1)

ADB是Android debug bridge的缩写&#xff0c;它使用PC机可以通过USB或网络与android设备通讯。 adb的源码位于system/core/adb目录下&#xff0c;先来看下编译脚本Android.mk&#xff1a; [plain] view plaincopy# Copyright 2005 The Android Open Source Project # # Andr…

matlab二次二阶距,用Matlab改进一次二阶矩法程序.doc

用Matlab编的计算结构可靠指标的改进一次二阶矩法程序(验算点法)题目&#xff1a;编制改进一次二阶矩法计算可靠指标的程序&#xff0c;并给出算例&#xff0c;要求提供源程序选取的算例为&#xff1a;zg(x,y)x*y-1140&#xff0c;其中x,y服从正态分布&#xff0c;μx38,Vx0.1,…