重载和重写的区别和用法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重载和重写的区别和用法相关的知识,希望对你有一定的参考价值。
1.重载Overload
概念是:在一个类中,方法名相同,参数列表不同(可以是类型不同,个数不同,顺序不同)
作用:屏蔽使用的差异,使用更加灵活丶方便。
例如:
class overload{ public void a(){ // 1 } public void a(int a){ // 2 这里2个3是因为参数类型不同 } public void a(double a){ // 3 } public void a(int a,double b){ //4 这里4 和5是参数 顺序不同 } public void a(double a,int b){//5 } public void a(int a,int b,int c){//6 这里和上面是个数不同 } }
注意:在实际使用中,会遇到数据类型自动提升的问题
例如:
public class Overload { public static void main(String[] args) { ad s = new ad(); //这里传入的参数是 int 和 double类型,而下面没有对应的 s.a(3,3.0); //结果是world // 这里传入二个int 类型 s.a(3, 3); // 结果是hello } } class ad{ public void a(double a,int b){ System.out.println("hello"); } public void a(double a,double b){ System.out.println("world"); } }
结论: 首先和传入参数相匹配的进行匹配,如果没有相只对应的类型,会向比传入类型范围大的选择。
如果传入的 参数都比方法中的参数类型大,那么久会报错。
重写:当父类所定义的方法无法满足子类需求时,可在子类中声明和父类完全相同的方法进行覆盖
注意:1.访问修饰符要求子类和父类相同,或者比父类权限更宽。
2.子类中的方法,不可抛出比父类更多、更宽泛的异常。
public class Overload { public static void main(String[] args) { father s1 = new son(); s1.a(); // 结果是 son 子类重写了父类的方法 } } class father{ public void a(){ System.out.println("father"); } } class son extends father{ public void a(){ System.out.println("son"); } }
不足之处,多多指导!
本文出自 “11134439” 博客,请务必保留此出处http://11144439.blog.51cto.com/11134439/1905227
以上是关于重载和重写的区别和用法的主要内容,如果未能解决你的问题,请参考以下文章