目录
什么是重载(Overload)和重写(Override)?
重载
重写
区别与联系
区别
联系
什么是重载(Overload)和重写(Override)?
重载
- 重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
- 每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。即多个重载方法,其入参肯定是不同的
简单来说,重载发生在本类,方法名相同,参数列表不同,与返回值无关,只和方法名,参数的类型相关。
public class OverlodeDemo{//test方法第一次重载,没有参数void test(){System.out.println("无参方法");}//test方法第二次重载,含一个整形参数void test(int a){System.out.println("a" + a);}//test方法第三次重载,含两个参数void test(int a,double b){System.out.println("a:" + a + "," + "b:" +b );}}重载的作用:①多个方法用同一个名字,调用的时候,无需记住那么多的方法名②对程序员而言,调用时直接根据所需自动匹配方法,减少了写方法名的重复步骤
重写
- 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。
在类继承关系中,父类的非抽象方法,子类是不强制要求重写的。
如果父类方法访问修饰符为 private 则子类就不能重写该方法
- 重写是发生在类的继承关系,或者类的实现关系中的,
简单来说,就是子类重写的方法必须和父类保持完全一致
//父类
public class Father {public void test(){System.out.println("父类");}
}//子类
public class Son extends Father{@Override //重写public void test() {System.out.println("子类"); }
}重写的作用
子类可以完善父类之中不足之处/定制化实现,使自身的方法更加的完善。
区别与联系
区别
重载和重写的区别如下
1.定义不同---重载是定义相同的方法名,参数不同;重写是子类重写父类的方法。
2.范围不同---重载是在一个类中,重写是子类与父类之间的。
3.多态不同---重载是编译时的多态性,重写是运行时的多态性。
4.返回不同---重载对返回类型没有要求,而重写要求返回类型,有兼容的返回类型。
5.参数不同---重载的参数个数、参数类型、参数顺序可以不同,而重写父子方法参数必须相同。
6.修饰不同---重载对访问修饰没有特殊要求,重写访问修饰符的限制一定要大于被重写方法的访问修饰符。
联系
方法重载是一个类的多态性表现,
而方法重写是子类与父类的一种多态性表现。