java重写和重载
方法的重载:
在一个类中的两个或两个以上的方法,他们方法名相同但是参数列表不同,这种方式称为方法的重载,方法的重载是实现多态性的方式之一。
参数列表不同指的是参数的个数不同或相同的个数但顺序不同或者类型不同,方法重载时返回值类型可以不同,但是仅仅是返回值类型不同的话不可以。
java在调用方法的时候,如果精确匹配没有对应的方法,会自动转换匹配相应的方法,例如,如果没有int类型的参数,但是有一个double类型的参数的同名方法,在调用该方法时如果传入int类型的参数,则不会报错,而是把int自动转换成double类型匹配double类型参数的方法。但是,这种情况也只是在精确匹配无法匹配的情况下才会发生,如果存在int类型参数的此方法,传int类型参数时则不会调用double类型的。
重载的价值在于它允许相关的方法用同一个名字来访问,没有什么规定要求重载的方法之间必须有关系,但是实际上如果真的是没有任何关系的方法就不应该用重载实现,而是应该用新的方法,否则的话就违背了重载的初衷。
普通方法可以重载,构造方法也一样可以重载。不管是普通方法还是构造方法,里边传递的参数都是既可以是简单类型也可以是对象。简单类型直接传值,而对象传递的则是引用。
重载遵循“编译期绑定”,即在编译时根据参数确定调用哪一个方法。
方法的重写:
在子类继承父类的时候,子类中与父类方法名和参数列表完全一样,但是其他地方有不同,这种方式叫做重写。重写只发生在继承的时候,如果一个类不能被继承,则也不能被重写。方法的重写也称为方法的覆盖。
重写遵循两同两小一大的原则,即:方法名相同,参数列表相同;子类抛出的异常要小于或等于父类抛出的异常,并且不能抛出父类没有的异常,子类的返回值类型要小于或等于父类的返回值类型;子类的访问权限要大于或等于父类的访问权限。
除开上述原则之外,还要知道的是被标识为final的方法不能被重写,不能被继承的方法不能被重写,例如private修饰的方法。
被子类对象重写过的方法,在程序运行时,根据对象的类型不同(而不是引用类型的不同)来决定调用哪个版本的方法,等号之前的是引用类型,new之后的是对象类型。
重写遵循“运行时绑定”,即在运行的时候根据引用指向的实际对象类型来决定调用的方法版本。
java重写和重载的更多相关文章
- Java重写、重载与覆盖
Java继承.重载与重写 一.继承(单继承) 1.利用extends关键字一个方法继承另一个方法,而且只能直接继承一个类. 2.当Sub类和Base类在同一个包时,Sub类继承Base类中的publi ...
- java 重写和重载的区别
重写:重写是子类的方法覆盖父类的方法,有两个重要特点 1.子类方法名和参数类型.个数必须和父类一样. 2.如果有返回值,则返回值类型也必须和父类一样. //父类 public class Bird() ...
- Java重写与重载之间的区别
重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变.即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为. 也就是说子类 ...
- java 重写与重载
一.方法重写: 参数列表必须完全与被重写方法的相同: 返回类型必须完全与被重写方法的返回类型相同: 访问权限不能比父类中被重写的方法的访问权限更低.例如:如果父类的一个方法被声明为public,那么在 ...
- java重写与重载的区别
override(重写) :即把改方法重新写一次,内部逻辑可变,外壳不变,核心重写 1. 方法名.参数.返回值相同. 2. 子类方法不能缩小父类方法的访问权限. 3. 子类方法不能抛出比父类方法更多的 ...
- Java重写和重载的区别
区别点 重载方法 重写方法 参数列表 必须修改 一定不能修改 返回类型 可以修改 一定不能修改 异常 可以修改 可以减少或删除,一定不能抛出新的或者更广的异常 访问 可以修改 一定不能做更严格的限制( ...
- java 重写 与 重载 用法
图例: 重写: 其实就是获取其他类 和自己类相同的方法名 来使用 重载: 其实就是创建多个相同的方法名,里面装载不同的参数 重写例子: Super关键字 重载的例子:
- Java重写与重载
重写的规则: 参数列表必须完全与被重写方法的相同: 返回类型必须完全与被重写方法的返回类型相同: 访问权限不能比父类中被重写的方法的访问权限更低.例如:如果父类的一个方法被声明为public,那么在子 ...
- Java—重写与重载的区别
1.重写(Override) 子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类型(除了子类中方法的返回值是父类中方法返回值的子类时)都相同的情况 ...
随机推荐
- 网易云免费OSS服务用做Markdown图床或博客图片外链
我使用据说是Windows下最好用的Markdown编辑器“MarkdownPad2”(个人感觉还是Visual Code+Markdown插件666)写Markdown,在贴图方面遇到一个问题,于是 ...
- 免费分享Navicat12各版本破解(仅供学习使用)
花了几个小时终于找到比较"绿色"的安装包了...(无力吐槽下现在网上好多挂羊头卖狗肉的网站) https://pan.baidu.com/s/1geMIkfT 密码:9a98 里面 ...
- UVW源码漫谈(三)
咱们继续看uvw的源码,这次看的东西比较多,去除底层的一些东西,很多代码都是连贯的,耦合度也比较高了.主要包括下面几个文件的代码: underlying_type.hpp resource.hpp l ...
- webrtc底层一对一连接过程探索(二)
一.连接过程继续解读-----fun32解读 1.1 fun32.02 "undefined" != typeof cordova && (N = !0, D = ...
- BZOJ 1778: [Usaco2010 Hol]Dotp 驱逐猪猡 [高斯消元 概率DP]
1778: [Usaco2010 Hol]Dotp 驱逐猪猡 题意:一个炸弹从1出发p/q的概率爆炸,否则等概率走向相邻的点.求在每个点爆炸的概率 高斯消元求不爆炸到达每个点的概率,然后在一个点爆炸就 ...
- POJ1556 The Doors [线段相交 DP]
The Doors Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 8334 Accepted: 3218 Descrip ...
- Oracle的order by的中文排序问题
Oracle 中查询结果按照某个中文字段或者英文字母(包括 符号)排序,并不会得到我们预期的结果,因为对于中文与英文字母及符号,Oracle实际是按照其对应的ASCII码值排序的! 可以看到按照中文村 ...
- SqlServer varchar数据中类似于1.1.1.1这种值的排序方法
select * from 表名order by Convert(int,left(列名,charindex('.',列名+'.')-1)) asc, 列名asc charindex('.',列名) ...
- 使用Openresty加快网页速度
新年快乐~~~ 上一篇文章讲到使用多级缓存来减少数据库的访问来加快网页的速度,只是,仍旧没有"嗖"一下就加载出来的感觉,想再优化一下,优化代码什么的已经到了极限.上周无意中看到了o ...
- SpringMVC之Http标准的头部信息