牛客网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,一经查实,立即删除!

相关文章

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…

2018.2.28(延迟加载和缓存)

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

小爬麦子学院教师

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

[HNOI2015] 落忆枫音

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

Java中的模板方法设计模式

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

winform中的数据绑定

1. 简单的数据绑定 例1 using (SqlConnection conn new SqlConnection(ConfigurationManager.ConnectionStrings["connStr"].ToString())) { SqlDataAdapter sda new SqlDataAdapter("Select * From T_Class Where F_TypeProduct order by F_RootID,F_Order…

jQuery数据表和Java集成

jQuery DataTables是一个开放源代码插件&#xff0c;用于在浏览器中创建表。 它具有许多功能&#xff0c;例如排序&#xff0c;服务器端处理&#xff0c; JQUERY UI主题滚动。 该插件的下载链接&#xff1a; http://www.datatables.net/download/ 在本演示中&#xff0c;我…

CSS 属性 - 伪类和伪元素的区别

伪元素和伪类之所以这么容易混淆&#xff0c;是因为他们的效果类似而且写法相仿&#xff0c;但实际上 css3 为了区分两者&#xff0c;已经明确规定了伪类用一个冒号来表示&#xff0c;而伪元素则用两个冒号来表示。 :Pseudo-classes ::Pseudo-elements 但因为兼容性的问题&…

class-感知机Perception

1 感知机模型1.1 模型定义2 感知机学习策略2.1 数据的线性可分性2.2 学习策略3 学习算法3.1 算法原始形式3.2 收敛性3 学习算法的对偶形式1 感知机模型 感知机perceptron是二类分类问题的线性分类模型&#xff0c;输入为实例的特征向量&#xff0c;输出为实例的类别&#xff08…

Java中的方法调用有多昂贵

我们都去过那儿。 在查看设计不良的代码的同时&#xff0c;听听作者对人们永远不应该牺牲性能而不是设计的解释。 而且&#xff0c;您不能说服作者摆脱其500行方法&#xff0c;因为链接方法调用会破坏性能。 好吧&#xff0c;这可能在1996年左右是正确的。 但是自那时以来&…

1.HTML

HTML简介 hyper text markup language 即超文本标记语言。 超文本: 就是指页面内可以包含图片、链接&#xff0c;甚至音乐、程序等非文字元素。 标准模板 <!DOCTYPE html> <html lang"en"><head> <meta charset"U…

php记住表单数据cookie,【PHP基础】cookies和session

1.Cookiescookie 常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时&#xff0c;它同时会发送 cookie。通过 PHP&#xff0c;您能够创建并取回 cookie 的值。1.1、如何创建 cookie&#xff1f;setcookie() 函数用于设置 cookie。…

C#调用Power Shell 管理Office365 执行脚本时遇到的问题

Power Shell管理Office参考http://www.mamicode.com/info-detail-494553.html C#调用Power Shell 参考 https://www.cnblogs.com/chenkai/archive/2010/11/09/1872471.html string pwd "**********";string userName "**********";StringBuilder ss new…

javaweb(三十七)——获得MySQL数据库自动生成的主键

测试脚本如下&#xff1a; 1 create table test1 2 ( 3 id int primary key auto_increment, 4 name varchar(20) 5 ); 测试代码&#xff1a; 1 package me.gacl.demo;2 3 import java.sql.Connection; 4 import java.sql.PreparedStatement; 5 import java.sql.ResultSet; …

基于Matlab的模拟通信实验平台设计,【通信原理仿真实验】通信原理虚拟实验仿真平台的设计和实现_玛雅作文网...

作文「通信原理虚拟实验仿真平台的设计和实现」共有 4564 个字&#xff0c;其中有 2704 个汉字&#xff0c;1316 个英文&#xff0c;162 个数字&#xff0c;382 个标点符号。作者佚名&#xff0c;请您欣赏。玛雅作文网荟萃众多优秀学生作文&#xff0c;如果想要浏览更多相关作文…

2018/3/1 省选模拟考试 50分

T1 30分模拟暴力&#xff0c;40分树的直径。拿了0分。&#xff08;空间开小了爆了&#xff0c;因为缩点之后是又建了一次图&#xff0c;两个边的编号tot没分开&#xff0c;mdzz&#xff09; 只写了后40分&#xff0c;而这40分中有20分不需要边双连通分量。写了一个类似于强连通…

骆驼和春天的Drools决策表

正如我在之前的文章中所展示的那样&#xff0c; JBoss Drools是一个非常有用的规则引擎 。 唯一的问题是&#xff0c;对于非技术人员而言&#xff0c;以Rule语言创建规则可能会非常复杂。 这就是为什么可以提供一种轻松的方式来创建业务规则的方法-在电子表格中创建决策表&…

酷炫,用Html5/CSS实现文字阴影

前两天有一个学html5前端小美女问我一个有关文字阴影的效果怎么去实现。她和我说文字阴影嘛,她也知道text-shadow,.但是却做不出想要的样子,其实css3的新功能是很强大的,不要把你的思想太过于局限化,好了,闲话也不多说,咱们就先来看看这个文本阴影. 一.文字阴影text-shadow 文…

从xtrabackup备份恢复单表【转】

目前对MySQL比较流行的备份方式有两种&#xff0c;一种上是使用自带的mysqldump&#xff0c;另一种是xtrabackup&#xff0c;对于数据时大的环境&#xff0c;普遍使用了xtrabackupbinlog进行全量或者增量备份&#xff0c;那么如何快速的从xtrabackup备份中恢复单张表呢&#xf…

CSS中的overflow属性

overflow属性 如果元素中的内容超出了给定的宽度和高度属性&#xff0c;overflow 属性可以确定是否显示滚动条&#xff0c;是否隐藏溢出部分等行为&#xff0c;规定当内容溢出元素框时发生的事情。 可能的值有&#xff1a; visible&#xff1a;默认值。内容不会被修剪&#xff…