一、方法的重载
1、什么是重载?
同一个类中,方法名相同,参数列表不同【顺序、个数、类型】
与返回值类型和访问修饰符无关
2、为什么要有方法的重载
方便根据我们的不同需求去调用不同的参数类型的方法
如下代码块所示:就是方法的重载
//方法一
public int cal(int a,int b){
int result=a*b;
return result;
}
//方法二
public int cal(int a, int b, int c){
int result=a*b*c;
return result;
}
3、怎么用
只要满足定义即可,做到方法名一样,参数列表不一样,与返回值和访问修饰符无关。
其中参数列表可以是数据类型不一样,参数的个数不一样或者参数的顺序不一样都算作参数列表不一样
如下代码块所示:
方法名一样都是sum
参数列表不一样:个数一样,但是数据类型不一样
所以满足方法的重载的条件
public void sum(int a,int b){
int sum=a+b;
System.out.println("sum:"+sum);
}
public int sum(int a,String b){
int c=b.equals("hhh")?1:2;
int sum=c+a;
return sum;
}
二、方法的重写
1、什么是方法的重写
产生在继承关系中
就是方法名一样,参数列表一样
返回值一样或者是其子类
访问修饰符不能严于父类
(private最严格,缺省default默认情况其次,protected次之,public最不严格,范围最广)
如下代码块所示:方法的重写
方法名一样:show
参数列表一样:个数一样、类型一样都是String、顺序也一样
返回值类型一样
子类访问修饰符是public没有严于父类private
如父类A:
class A{
private void show(String info){
}
}
子类B继承了A:
class B extends A{
public void show(String a)
}
2、为什么要有方法的重写
父类的方法不能满足我们的需要,所以要对父类的方法进行重写
(至于为什么要重写父类方法,而不是进行自己重新写一个方法,我想装修房子,跟推翻了重新建哪个更省事不必多说了吧)
3、怎么用
按照定义要求去重写父类方法
注:重写之后,执行的是子类的方法
三、重载和重写的关系
两者没有任何关系
一个是同一个类中,一个是两个类,继承关系中
只是称呼上都是重而已