java的重写、重载、覆盖的差别
多态性
通过继承,一个类能够用作多种类型:能够用作它自己的类型、不论什么基类型,或者在实现接口时用作不论什么接口类型。这称为多态性
重载
每一个类型成员都有一个唯一的签名。方法签名由方法名称和一个參数列表(方法的參数的顺序和类型)组成。
仅仅要签名不同。就能够在一种类型内定义具有同样名称的多种方法。
当定义两种或多种具有同样名称的方法时,就称作重载。
即重载时同样名称成员的參数列表是不同样的(參数顺序和类型)。
继承,重写和隐藏成员 (重写 = 覆盖)
派生的类型继承其基本类型的全部成员;也就是说。这些成员是在派生类型之上定义的,并可用于派生类型。继承成员的行为和质量能够通过下面两种方式来改动:
1、派生类型可通过使用同样的签名定义一个新成员。从而隐藏继承的成员。将先前的公共成员变成私有成员。或者为标记为 final 的继承方法定义新行为时,能够採取这样的方法。
2、派生类型能够重写继承的虚方法。
重写方法提供了对方法的一种新定义。将依据执行时的值的类型。而不是编译时已知的变量类型来调用方法。仅仅有当虚方法没有标记为 final 且新方法至少能够像虚方法一样进行訪问的情况下,成员才干重写虚方法。
方法名,參数同样形成重写,重写的方法不能减少原方法的"可见度",也不能改变原方法的返回值类型。
方法名同样,參数不同(个数、类型)形成重载,重载的方法可看成一个全新的方法。与原方法相比它能够有不同的"可见度"和“返回值类型”。例如以下例:
class A {
protected int method1(int a, int b) { return 0; }
}
public class B extends A{
public int method1(int a, int b) { return 0; } //正确,重写父类方法,能够扩大訪问权限
//private int method1(int a, int b) { return 0; } //错误,重写父类方法,不能减少了訪问权限
//private long method1(int a, int b) { return 0; } //错误。重写父类方法。不能改变返回值类型
public short method1(int a, long b) { return 0; }//正确,重载自身的方法。能够有不同的訪问权限和返回值类型
private int method1(int a, long b) { return 0; }//正确,重载自身的方法,能够有不同的訪问权限和返回值类型
}
但这里 方法public short method1(int a, long b) { return 0; }和 方法private int method1(int a, long b) { return 0; }不能同一时候存在,由于在同一类中。不同意存在同样名字和參数类型的方法(重写的方法)。
java的重写、重载、覆盖的差别的更多相关文章
- java 的重写(覆盖) 和重载的区别
方法的的重写(覆盖) 在类继承中,子类可以修改从父类继承来的行为,也就是说子类能创建一个与父类方法有不同功能的方法,但具有相同的:名称.返回类型.参数列表.如果在子类中定义一个方法,其方法名称.返回值 ...
- C++中的重载隐藏覆盖&&JAVA中的重载覆盖&&多态
class 类继承默认是private, struct 默认继承是public C++中的隐藏: 只要派生类中出现和基类一样的函数名,基类中的函数就会被派生类中的函数给隐藏(如果派生类和基类中的函数名 ...
- Java基础--重写(Overriding,覆盖)-重载(Overloading)
多态性: Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义.调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法 Java的方法重写, ...
- Java 方法重载,方法重写(覆盖),继承等细节注意
1.方法重载(method overload)的具体规范 如果有两个方法的方法名相同,但参数不一致,那么可以说一个方法是另一个方法的重载. 一.方法名一定要相同. 二.方法的参数表必须不同,包括参数的 ...
- java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?重写跟重载的区别?
java中的方法重载发生在同一个类里面两个或者多个方法的方法名相同但是参数不同的情况.与此相对,方法覆盖是说子类重新定义了父类的方法.方法覆盖必须有相同的方法名,参数列表和返回类型. 覆盖者可能不会限 ...
- JAVA中的重载和重写
重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载(Overloading)是一个类中多态性的一种表现 ...
- java知识点--重写与重载
重载(Overload): (1)方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型.重载Overloading是一个类中多态性的一种表现. ...
- java 重写 重载
首先我们来讲讲:重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载Overloading是一个类中多态 ...
- 漫漫人生路,学点Jakarta基础-重写(覆盖)、重载
首先我们现在开始进入Jakarta的时代,由原甲骨文易主到 Eclipse基金会下,但是不想舍弃java名字,因此基金会重新投票选出了Jakarta EE(雅加达).但是我们明白换汤汤不换药的道理,基 ...
- JAVA函数的重载和重写
一.什么是重载(overlording) 在JAVA中,可以在同一个类中存在多个函数,函数名称相同但参数列表不同.这就是函数的重载(overlording).这是类的多太性表现之一. 二.重载的作用: ...
随机推荐
- PHP简单利用 token 防止表单重复提交
<?php /* * 隐藏一个可变的token,每次提交都需要和服务器校对 */ session_start(); function set_token() { $_SESSION['token ...
- word2007-2010排版中解决段后插入分页符 新页首行空行问题
word2007-2010排版中,很多人都会遇到 这个问题.当你在 段后插入分页符 想开启新的一页的时候,新页首行有个空行.如果删除,会连同分页符一起删除.不删除有影响排版美观.那怎么解决呢: 解决办 ...
- winform中让pictureBox 显示的图片旋转
img.RotateFlip(RotateFlipType.Rotate90FlipNone);顺时针旋转90度 RotateFlipType.Rotate90FlipNone 逆时针旋转90度 Ro ...
- Tasker, Android系统增强神器, 变量汇总
http://tasker.dinglisch.net/userguide_summary.html#variables.html http://tasker.dinglisch.net/usergu ...
- 按字母顺序排列的IDC函数列表
http://www.2cto.com/shouce/ida/162.htm 按字母顺序排列的IDC函数列表 下面是函数描述信息中的约定: 'ea' 线性地址 'success' 0表示函数失败:反之 ...
- 老生常谈javascript的5中继承
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Workflow:采用坐标变换(移动和旋转)画箭头
背景 流程设计器的连线部分需要画一个箭头代表连接的方向,下图是期望的效果: 刚开始我准备采用三角函数(sin和cos)来计算三角的坐标,实现的过程真不爽(有兴趣的朋友可以试试),就在完工的时候,突然想 ...
- golang的缓冲channel和无缓冲channel的区别
话说golang的channel同步的定义真是让人无力吐槽,码农的用户体验就这么难搞么,超耐磨阿,无缓冲和缓冲居然有这么大区别....靠 转载一段网上的资料 --------------------- ...
- llvm中如何利用分支概率和基本块频率估计
1. 背景 llvm自2.9版以后,已经集成了对分支概率和基本块频率的静态分析. 分支概率(branch probability)是指在程序的控制流图中,从控制流从一个基本块A到其任意后继基本块Si的 ...
- Epplus 设置excel 页边距 及多文件合并
1:使用epplus合并多个excel文件到同一excel的不同sheet页中 private static bool MergeExcel(string _stFilePath, List<s ...