java重写的目的是什么_什么是重写?重写的作用?
一、什么是重写?
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()方法的意义
本文同步分享在 博客“Thinkingcao”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
java重写的目的是什么_什么是重写?重写的作用?相关推荐
- java和office二级证书用处_计算机二级证书有什么作用
还不清楚计算机二级考试内容的小伙伴,赶紧来瞧瞧吧!下面由出国留学网小编为你精心准备了"计算机二级考试内容 证书有什么作用",本文仅供参考,持续关注本站将可以持续获取更多的考试信息! ...
- java按需读取word文件_干货分享:ASP.NET CORE(C#)与Spring Boot MVC(JAVA)异曲同工的编程方式总结...
我(梦在旅途,http://zuowj.cnblogs.com; http://www.zuowenjun.cn)最近发表的一篇文章<.NET CORE与Spring Boot编写控制台程序应有 ...
- Java中的会话管理– HttpServlet,Cookie,URL重写
Session Management in Java Servlet Web Applications is a very interesting topic. Session in Java Ser ...
- java 必须try catch的异常_【java基础之异常】死了都要try,不淋漓尽致地catch我不痛快!...
@ 1.异常 1.1 异常概念 异常 :简单说就是不正常运行,最终导致JVM的非正常停止. 在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象.Java处 ...
- java2实验手册求方程的根_完成实验手册实验六:P101编程题2、3、4 Java程序设计上机实验手册(完稿)_吴娜炯.pdf_学小易找答案...
[简答题]将一个文件的内容装换为大写,显示出来,并把内容复制到文件中去. [简答题]什么是自主访问控制?什么是强制访问控制? 什么是基于角色的访问控制? [简答题]根据第五课教学视频,实现可视化日历. ...
- java中级程序员面试题_中级Java程序员常见面试题汇总
下面是一些中级Java程序员常见面试题汇总,你可以用它来好好准备面试. 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器 ...
- 【Java速成教学】桌球游戏项目_教你用最短的时间开发桌球小游戏_Java初学者项目
Java小游戏项目回归!今天给大家带来的是桌球游戏~ 本课程面向刚入门或者有一定Java基础的人群,帮助学员理解面向对象编程,并将基础知识进行实际应用,最终目标为开发出一个功能强大的桌球游戏.[Jav ...
- 为什么使用HashMap需要重写hashcode和equals方法_为什么要重写 hashcode 和 equals 方法?...
1. 通过Hash算法来了解HashMap对象的高效性 2. 为什么要重写equals和hashCode方法 3. 对面试问题的说明 <Java 2019 超神之路> <Dubbo ...
- 为什么使用HashMap需要重写hashcode和equals方法_为什么要重写hashcode和equals方法?你能说清楚了吗...
我在面试Java初级开发的时候,经常会问:你有没有重写过hashcode方法?不少候选人直接说没写过.我就想,或许真的没写过,于是就再通过一个问题确认:你在用HashMap的时候,键(Key)部分,有 ...
最新文章
- reporting Server組件不全引起的致命錯誤
- R语言将dataframe数据从宽表变为长表实战(melt函数、pivot_longer函数、gather函数)
- WordPress 多个安全漏洞
- HTML怎么让正方形转动,第十讲:html5中canvas实现正方体的动态旋转
- mac系统快捷键大全详细介绍
- (转)shiro权限框架详解06-shiro与web项目整合(下)
- 【设计模式】5、单例模式
- dubbo 自定义路由_高性能可扩展分布式RPC框架Dubbo内核原理揭秘
- iCode代码托管的一些基本指令
- opensips脚本格式
- Android Camera对焦相关基础自动对焦,手动对焦
- 蒙氏素材---创意时钟---三段卡 蒙氏教育
- 微信小程序学习第8天——自定义组件的数据监听器Observer小案例
- 生长算法实现点集的三角剖分(Python(Tkinter模块))
- 再来聊聊Redis到底是什么?
- 前端使用微信sdk上传图片的坑,及万千种方法比较实用的一种,亲测有效
- 计算机常用英语大全 (中英文对照)
- R数据分析:纵向数据如何做中介,交叉滞后中介模型介绍
- 鸿蒙系统第一批升级名单,鸿蒙系统首批升级名单详细介绍
- linux 命令行退出某条命令