目录
1.什么是重载?用法?
方法的重载是指同一个类中具有相同的名字,但参数不同的多个方法。
为什么用重载 : 在编程过程中,是存在一定的编程规范的,所以这要求我们命名的方法名是要有实际意义的,有时相同的方法功能可能面临不同的参数选择,而为了规范与方便了解各个方法之间的关系,这就会用到重载,执行过程中会根据方法的参数来辨别方法来执行
所以,重载是很大程度用来提高程序的可读性的,不用也不会影响程序运行
例 :
public void add(T val){
root=add(root,val); //调用重载后的add方法
}
public Node add(Node root,T val){ //重载add方法
if (root==null){
return new Node(val);
}
if (val.compareTo(root.val)<0){
root.left=add(root.left, val);
}else {
root.right=add(root.right,val);
}
return root;
}
上述代码块就是重载的一个好的体现,在同样的添加模块,因为参数不同,我们使用重载可以使代码有一定的规范性
另外参数不同也包含三方面的不同
数量不同,类型不同,顺序不同
例:
public void method(){
}
public void method(int a){ //重载1
}
public void method(String a){ //重载2
}
public void method(String a,int b){ //重载3
}
public void method(int b,String a){ //重载4
}
另外需要注意一点 : 重载跟返回值类型没有关系
例 :
如上图,这样会报错,所以返回值类型跟重载没有关系
2.方法的重写
当父类的方法实现不能满足子类需求时
,
可以对方法进行重写
( override)
例 :
public class Birds { //鸟类
public void method(){
System.out.println("鸟会飞");
}
}
public class Ostrich extends Birds{ //鸵鸟类
@Override //重写标签
public void method() {
System.out.println("鸵鸟不会飞,鸵鸟跑");
}
}
通过上面例子我们可以了解 : 鸟类有一个"飞"的方法,鸵鸟类继承了鸟类,但鸵鸟不会飞,从鸟类继承来的方法不能满足鸵鸟类实际的需求,所以我们对继承的方法进行重写,让他满足我们需要的功能
需要注意 : 重写是对继承来的方法而言的
有人会说,我重新定义个方法实现这个功能不也可以,这样没什么问题,但对于编码规范来讲,这样写是很麻烦的,所以我们用重写就没有这个顾虑,而且重写可以更好的拓展方法的功能
●
方法重写规则
• 方法名相同、参数列表相同;
• 返回值类型相同;
• 访问权限不能小于父类权限;
注意:构造方法
,
静态方法不能重写
,
成员变量不存在重写
3.二者之间的区别
重载 : 方法名相同,但参数不同 ,与返回值无关,是对当前类而言的
重写 : 方法名相同,各个参数都相同,返回值相同 ,是对子类而言的
重载和重写都大大增强了代码的扩展性