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).这是类的多太性表现之一. 二.重载的作用: ...
随机推荐
- 内功心法 -- java.util.LinkedList<E> (3)
写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...
- 反向代理实现同域名下PHP和Java共存
1.背景介绍 之前一直从事PHP开发工作,公司内业务均由PHP实现,最近由于公司架构微调,分配了几个Java项目给团队,但是由于团队对Java不熟悉,有几人对Java理解程度也是略懂,这里说的略懂,真 ...
- LT1946A-- Transformerless dc/dc converter produces bipolar outputs
Dual-polarity supply provides ±12V from one IC VC (Pin 1): Error Amplifier Output Pin. Tie external ...
- Digital controller compensates analog controller
Emerging digital ICs for power control lack basic features, such as the built-in gate drive and curr ...
- SD卡 TF卡 接口引脚定义
- Altium Protel PCB Layer
The layers themselves are grouped by their functional types: Signal Layers – Top Layer, Bottom Layer ...
- 探究rh6上mysql5.6的主从、半同步、GTID多线程、SSL认证主从复制
http://407711169.blog.51cto.com/6616996/1203973/
- chrome插件开发-----------将网址转化成二维码website2QRcode
微信自带的浏览器无法输入链接,仅仅能通过扫描二维码实现.可是有时候看到一个有趣的站点,想分享,还得先去将链接转化成二维码的站点.先转成二维码.再扫描.有点麻烦.所以写了一个插件.直接生成二维码. 须要 ...
- hibernate将connection放进threadlocal里实现数据库连接池
Why ThreadLocal? 无论如何,要编写一个多线程安全(Thread-safe)的程序是困难的,为了让线程共享资源,必须小心地对共享资源进行同步,同步带来一定的效能延迟,而另一方面,在处理同 ...
- 《Haskell趣学指南》
<Haskell趣学指南> 基本信息 原书名:Learn You a Haskell for Great Good!: A Beginner's Guide 原出版社: No Starch ...