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).这是类的多太性表现之一. 二.重载的作用: ...
随机推荐
- HDU 5301 Buildings 数学
Buildings 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5301 Description Your current task is to m ...
- 国内OCR供应商及其演示链接
最近因为需要收集了一些OCR的供应商,可以做身份证识别,银行卡识别,名片识别等特定场景下的文字识别.在通用场景下的文字识别效果还不是很理想.现在OCR在特定的场景下做得已经很不错了.下面列出下这些厂商 ...
- EntityFramework中几种操作小结
目前项目中使用到的EntityFramework中几种操作小结,先标记下.没有详细介绍,后续有空的话再补充一些并完善一下. 列中加入RowVersion时间戳 public class Product ...
- SLVA299A : Load Disconnect ( Input to Output Isolation ) for the TPS61040
http://www.ti.com/lit/an/slva299a/slva299a.pdf Many boost converters have an external rectifier diod ...
- 面试题1:如何实现C++单例模式?
1. 软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径.设计模式中运用了面向对象编程语言的重要特性:封装.继承.多态.真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积 ...
- Win7下安装pip
1.首先下载setuptools,下载地址https://pypi.python.org/pypi/setuptools#downloads2.解压下载后的文件,进入命令行,将目录切换到解压后文件夹所 ...
- VS2010 VC++ 项目添加引用 出现 Internal CPS Error问题原因及解决办法
在VS2010 VC++ 项目添加引用时,有时会出现Internal CPS Error错误,提示信息: 'Internal CPS Error: We couldn't find the exist ...
- poi 技术动态更新 Excel模板内容,动态更新内容
1.控制器方法 private URL base = this.getClass().getResource(""); /** * 流拍之后,可以下载询价单 * * @param ...
- wamp网站Forbidden You don't have permission to access
Forbidden You don't have permission to access 问题原因:apache的2.4的版本中 Require all denied 应该变成Require a ...
- RTF文件合并 备忘
多个独立的rtf文件合并时,如果文件纸张方向存在横向 纵向不一致时,文件之间需要插入分节符 \pard \ltrpar\qj \li0\ri0\nowidctlpar\wrapdefault\aspa ...