[转帖]Java中重写和重载与多态的关系
重写(Override)
重写指的是子类对父类可允许访问的方法进行重新编写,两者有相同的名称,相同参数,相同返回值,但是内容却不相同,子类的新方法将覆盖父类中原有的方法。
重载(Overload)
重载是在同一个类中,方法名称相同,参数不同。这样同名不同参的方法被称为重载。
重载VS重写
重写规则:
1、父类成员发放只能被它的子类重写
2、子类方法的访问修饰符一定要大于父类的访问修饰符(public>protected>default>private)。
3、子类和父类在同一包中,那么子类可以重写父类所有方法,除了声明为private和final的方法。
4、子类和父类不在同一个包中,那么子类只能够重写父类的声明为 public 和 protected 的非final 方法。
5、声明为 final 的方法不能被重写。
6、声明为 static 的方法不能被重写,但是能够被再次声明。
7、子类方法的参数列表、方法名称、返回值必须和父类方法一致
8、构造方法不能被重写。
9、如果不能继承一个方法,则不能重写这个方法。
重写示例:
public class Cat {
public static void main(String[] args) {
Cat cat = new Jack();
cat.name();
}
public void name(){
System.out.println("cat");
}
}
class Jack extends Cat{
public void name(){
System.out.println("jack");
}
}
重载规则:
1、被重载的方法必须改变参数列表(参数个数或类型不一样);
2、被重载的方法可以改变返回类型;
3、被重载的方法可以改变访问修饰符;
4、被重载的方法可以声明新的或更广的检查异常;
5、方法能够在同一个类中或者在一个子类中被重载。
6、无法以返回值类型作为重载函数的区分标准。
重载示例:
public class Cat {
public static void main(String[] args) {
Cat cat = new Cat ();
cat.name();
cat.name("Jack");
}
public void name(){
System.out.println("cat");
}
public void name(String newName){
System.out.println(newName);
}
}
上面说完了重载与重写,下来我们需要看看什么是多态呢?还有它和重载与重写之间有什么样的关系呢?
多态
多态的概念,就是同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。
如果按照这个概念来定义的话,那么多态应该是一种运行期的状态。
实现多态,需要三个条件:
1、即有类继承或者接口实现。
2、子类要重写父类的方法
3、父类的引用指向子类的对象。
更多时候,大部分人认为动态还分为动态多态和静态多态。将重载视为静态多态,因为他需要在编译期决定具体调用哪个方法、关于这个动态静态的说法,我更偏向于重载和多态其实是无关的。我认为,多态应该是一种运行期特性,Java中的重写才是多态的体现。
[转帖]Java中重写和重载与多态的关系的更多相关文章
- Java中重写与重载的辨析
摘要:在我们学习Java过程中,重写与重载使我们在面向对象里要学习的重要知识点之一,那我们看看它们有那些区别: 一.重写 1.概念:简单的说就是子类将从父类继承而来的方法重新实现一次. 2.特点: ① ...
- 浅谈Java中重写与重载的区别
重载和重写是Java中两个截然不同的概念.但是却因为名字相近导致很多人经常混淆. 下面用例子展示出他们之间的区别. 在Java中,重载(overloading) 发生在本类.方法名相同,参数列表不同, ...
- Java中重写与重载
重写(覆盖):发生在子类与父类之间:方法名相同方法的个数.类型相同返回值类型小于等于父类的返回值类型 重载:发生在一个类中:方法名相同方法的个数.类型不同返回值类型可以相同也可以不相同
- Java中重写与重载的区别
方法重载:关键字overload,方法名和方法的返回类型都相同,方法参数个数和类型不一样方法重写:也叫方法覆盖,关键字override,相对于类继承而言,重写的方法名,返回类型,参数个数,参数类型都要 ...
- 在Python中该如何实现Java的重写与重载
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:清风python PS:如有需要Python学习资料的小伙伴可以加点击 ...
- java中方法的重载和覆盖
java中方法的重载和覆盖 先来了解一下这两个名词的含义. 重载: 在一个类当中才可以重载,方法名相同,参数个数不同或参数个数相同而参数类型不同. 覆盖: 又称重写,在派生类(子类)中重写基类(父类) ...
- Java中方法的重载
Java 中方法的重载 问: 什么是方法的重载呢? 答: 如果同一个类中包含了两个或两个以上方法名相同.方法参数的个数.顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了.如下所示 4 个方 ...
- Java中的方法重载
一.什么是方法重载? 方法重载就是两个或多个方法的方法名相同,但是方法的形参类型,数量,顺序不同. 上面提到的三点也就是一个方法的特征标,只要有一点不相同,则该方法就不相同,就可以实现重载. 在这里的 ...
- Java学习笔记十二:Java中方法的重载
Java中方法的重载 什么是方法的重载呢? 如果同一个类中包含了两个或两个以上方法名相同.方法参数的个数.顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了.如下所示 4 个方法名称都为 s ...
随机推荐
- 牛股资讯-PT
智能盯盘:实时监控股票涨跌极速行情:实时推送全球行情海量资讯:实时发布海量信息 股票平台,炒股软件,东方财富网,同花顺,大智慧,益盟操盘手,a股,沪深股市,创业板,交易策略,选股,大盘,牛股,牛市,财 ...
- Docker网络配置、Docker部署分布式项目
目标 1.Docker网络配置 2.Docker部署SpringCloud项目 Docker网络配置 Docker网络模式介绍 Docker在创建容器时有四种网络模式:bridge/host/cont ...
- Vue的数据双向绑定原理——Object-defineProperty
一.定义 ①方法会直接在一个对象上定义一个新属性,或者修改一个已经存在的属性, 并返回这个对象. ②vue.js的双向数据绑定就是通过Object.defineProperty方法实现的,俗称属性拦截 ...
- 洛谷p2672推销员题解
日常扯废话: 话说题解里的思路都写得真的是很奈斯啊 但是 代码看不懂确实让人头疼(可能是我太弱了) 就像题解里的第一篇题解代码简洁但是属实看不明白 趁着学姐刚给我讲了知识还热乎赶紧给泥萌说说哈 正文: ...
- Linux中的文件
一般情况下,每个存储设备或存储设备的分区(存储设备是硬盘.软盘.U盘 ..)被格式化为文件系统后,都会有两部份,一部份是iNode,另一部份是Block.Block是用来存储数据用的,而iNode就是 ...
- pip命令提示unknow or unsupported command install解决方法
执行pip命令安装模块,提示unknow or unsupported command install 原因: 使用where pip查看, 电脑中装了loadrunner,存在多个pip,不知道使用 ...
- TypeError: BlobBuilder is not a constructor
var BlobBuilder = window.BlobBuilder || window.MozBlobBuilder || window.WebKitBlobBuilder || window. ...
- Fluent瞬态结果导出为Ensight格式
参考: (1)<ANSYS Fluent User's Guide>的3.13.9. EnSight Case Gold Files (2)https://support.ceisoftw ...
- 后台启动es head,关闭shell后es head自动关闭
后台启动head命令:grunt server & 注意:加上&虽然执行了后台启动,但还是有日志打印出来,使用ctrl+c可以退出.这时如果直接关闭shell, head进程就会终止 ...
- zookeeper核心原理全面解析
下述各zookeeper机制的java客户端实践参考zookeeper java客户端之curator详解. 官方文档http://zookeeper.apache.org/doc/current/z ...