一、什么是重写?

1. 重写(Override)概念

重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!

重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。

重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如: 父类的一个方法申明了一个检查异常 IOException,但是在重写这个方法的时候不能抛出 Exception 异常,因为 Exception 是 IOException 的父类,只能抛出 IOException 的子类异常。

2. 个人理解:

在子类中可以根据需要对从基类中继承来的方法进行重写,重写是对类中方法的扩充,因为继承用的是父类的东西,重写则不仅得到父类的东西,同时也加入了自己的东西

3. 官方理解:

在Java和其他一些高级面向对象的编程语言中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。 如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。

二、方法重写的一些特性:

  • 1.发生方法重写的两个方法返回值、方法名、参数列表必须完全一致(子类重写父类的方法)
  • 2.子类抛出的异常下不能超过父类相应方法抛出的异常(子类异常不能大于父类异常)
  • 3.子类方法的访问级别不能低于父类相应方法的访问级别(子类访问级别不能低于父类访问级别)

根据2,3条可以确定第一条,子类重写父类方法的返回值类型不能大于父类方法的返回值类型,即是说子类方法的返回值必         须和父类方法的返回值相同或是其子类。

  • (1) 父类与子类之间的多态性,对父类的函数进行重新定义。即在子类中定义某方法与其父类有相同的名称和参数。
  • (2)若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。如需父类中        原有的方法,可使用super关键字,该关键字引用了当前类的父类。

注意:方法重写与方法重载不同,方法的重载是方法的参数个数或种类或顺序不同,方法名相同。

三、重写示例

  • 父类Animal
package com.example.demo.entity;/*** @desc:  父类Animal* @author: cao_wencao* @date: 2020-11-19 10:07*/
public class Animal {public void move(){System.out.println("狗可以跑和走");}}
  • 子类Cat重写父类move()方法
package com.example.demo.entity;/*** @desc:  子类Cat重写Animal的move()方法* @author: cao_wencao* @date: 2020-11-19 10:11*/
public class Cat extends Animal{public void move(){super.move();System.out.println("猫可以跳、可以吃小鱼");}
}
  • TestAnimal

package com.example.demo.entity;/*** @desc:* @author: cao_wencao* @date: 2020-11-19 10:13*/
public class TestAnimal {public static void main(String[] args) {Animal animal = new Animal(); // Animal 对象Animal cat = new Cat(); // Cat 对象//animal.move();// 执行 Animal 类的方法cat.move();//执行 Cat 类的方法}}

结果如下:

狗可以跑和走
猫可以跳、可以吃小鱼

四、重写的作用?

重写是为了增强类的重用性和复用性,扩展性;

重写是对类中方法的扩充,因为继承用的是父类的东西,重写则不仅得到父类的东西,同时也加入了自己的东西,两全其美。

五、关于Java中重写ToString()方法的意义

https://thinkingcao.blog.csdn.net/article/details/55045958

什么是重写?重写的作用?相关推荐

  1. Java里重写toString的作用

    创建一个Student类,然后再主函数里输出,查看效果 package com.moon.pojo;import java.util.Objects;/*** @author moon*/ publi ...

  2. Swift基础语法: 30 - Swift的基类, 子类, 重写, 重写方法, 重写属性, 防止重写

    前面我们讲了有关于脚本语法的基本认识以及使用, 现在让我们来看看Swift的其他东西: 1.基类 所谓的基类, 就是OC中的父类, 不继承任何类, 就叫做基类, 让我们来看看例子: class Veh ...

  3. Java学习(9)(3种向上转型的方式、重写、向下转型、多态的优缺点、抽象类【基础规则、抽象类的作用】接口【基础规则、 接口的使用】)

    接上次博客:JAVA学习(8)继承 ( 继承的注意事项.Java的执行顺序.继承方式.限定词protcted.final关键词.多态.动态绑定和静态绑定 )_di-Dora的博客-CSDN博客 目录 ...

  4. toString()及重写的作用与应用

    新建一个类product,有属性id.name public static void main(String[] args) {int id = 1;String name = "name& ...

  5. android getitem,android中Baseadapter的 getItem 跟 getItemId 的作用和重写

    android中Baseadapter的 getItem 和 getItemId 的作用和重写 重写Baseadapter时,我们知道需要重写以下四个方法:getCount,getItem(int p ...

  6. java中重载与重写的区别

    最近了解一下重载和重写  一.重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载Overloading ...

  7. Java基础学习总结(11)——重载与重写

    2019独角兽企业重金招聘Python工程师标准>>> 首先我们来讲讲:重载(Overloading) 一.方法的重载 方法名一样,但参数不一样,这就是重载(overload). 所 ...

  8. 重写,重载,抽象类,接口,抽象类和接口区别

    1.多态之重写,重载     重写:当一个子类继承一父类,而子类中的方法与父类中的方法的名称,参数个数.类型都完全一致时,就称子类中的这个方法重写了父类中的方法.     new,virtual,ov ...

  9. 【Java基础】重写与重载

    为什么80%的码农都做不了架构师?>>>    重写(Override): 定义:在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法.但有时子类并不想原封不动地继承父类 ...

  10. 重写与重载的区别 以及 重写中super的使用

    重写是父类方法与子类方法有共同的参数名参数列表,返回类型必须父类的方法一致.子类的访问修饰符一定要大于等于父类的访问修饰符.如果在子类中还需要用到父类的方法,用super.method() 然后继续写 ...

最新文章

  1. python xgb模型 预测_Python 调用 PMML
  2. 利用源代码包搭建LAMP
  3. Spring学习笔记-注入实战篇
  4. 【干货】策划一个线上活动的整体流程
  5. nginx 路由配置
  6. matlab读取正则找科学,MATLAB常用正则表达式记录
  7. ASP.NET Web API简单学习
  8. SQL SERVER 高级数据库脚本编程
  9. Targeted Resumes How to Write a Targeted Resume By Alison Doyle
  10. Golang入门(3):一天学完GO的进阶语法
  11. senborn绘制混淆矩阵
  12. INFORMATION_SESSION_VARIABLES feature is disabled问题
  13. oracle负数,oracle取交集_oracle取负数_oracle case when
  14. 解析腾讯企业邮箱到自己域名,设置mail的cname
  15. ngix入门 Linux系统Ubuntu ngix安装
  16. 计算机网络期末考试题库(超级多的那种)
  17. 在线字节转换工具G,M,Byte
  18. 身体健康是第一生产力 --- 我看央视主持人李咏早逝
  19. C++ 函数模板 实例化和具体化
  20. java pacs上传服务_医疗pacs系统影像数据的同步方法及前置服务器的制造方法

热门文章

  1. android bitmap 灰度图,Bitmap 类
  2. 获取tranform参数函数的封装
  3. 4、VI/VIM编辑器
  4. 一般一个电脑有几个网卡,分别是什么网卡
  5. 服务器内存32g与64g性能区别,手机同一款,为什么32G和64G,差别大,同样都是运行内存4G的,但是64G却被叫做高配版?...
  6. 完整的Web前端开发学习路线图
  7. 带有酒店评论的情绪分析 - 处理数据
  8. java.lang.IllegalArgumentException: Both dimensions must be greater than 0
  9. c语言指针info,C语言指针深入理解
  10. 笔记本外接显示器“显示信号输入超出范围“及外接显示器自动息屏的问题解决方案