利用摸鱼时间、每天积累一个知识点、学精学透、夯实基础、面试不用愁。
一、重载(Overload)
方法重载
就是让类用统一的方式处理不同类型的数据,不同参数的一种手段。
a.创建一个重载类
public class Overloading {
int computed(int a,int b){
return a+b;
}
int computed(int a,int b,int c){
return a+b+c;
}
}
b.main方法调用
public static void main(String[] args) {
Overloading overloading = new Overloading();
System.out.println(" 重载 overloading.computed(1,2)结果:"+overloading.computed(1,2));
System.out.println("重载 overloading.computed(1,2,3)结果:"+overloading.computed(1,2,3));
}
输出结果:
重载 overloading.computed(1,2)结果:3
重载 overloading.computed(1,2,3)结果:6
重载要注意以下几点:
函数名
相同- 参数
类型
参数个数
不相同。 返回值的类型
可以相同也可以不相同,无法以返回值的类型作为是否是函数重载的判断,可以抛出不同的异常,调用方法的时候,通过传递给他们不同的参数个数和参数类型来决定具体使用哪个方法,是类中多态性的表现
二、重写(Override)
a.创建一个接口Overriding
,两个类OverridingImpl
、Overriding2Impl
实现这个接口(有兴趣的可以用一个类来继承来重写)
public interface Overriding {
int computed(int a,int b);
}
public class OverridingImpl implements Overriding {
//加法计算
@Override
public int computed(int a, int b) {
return a+b;
}
}
public class Overrideing2Impl implements Overriding {
//减法计算
@Override
public int computed(int a, int b) {
return a-b;
}
}
b.创建main函数调用
public static void main(String[] args) {
Overriding overiding = new OverridingImpl();
System.out.println("重写 overiding.computed(1,2) 结果:"+overiding.computed(1,2));
Overriding overiding2 = new Overrideing2Impl();
System.out.println("重写 overiding.computed(1,2) 结果:"+overiding2.computed(1,2));
}
输出结果
重写 overiding.computed(1,2) 结果:3
重写 overiding2.computed(1,2) 结果:-1
一个类被两个类实现,重写了实现的方法,在调用时候执行相应的方法
重写要注意以下几点:
- 父方方法的参数列表必须完全与被子类重写的方法的参数列表相同,否则不能称其为重写而是重载
- 父类返回的类型必须与被子类重写的方法的参数列表相同,否则不能称其为重写而是重载
- Java 中规定,被子类重写的方法不能拥有比父类方法更加样额的访问权限
三、主要区别点总结
区别点 | 重载 | 重写(覆写) |
---|---|---|
英文 | Overload | 重写(覆写)Override |
定义 | 方法名称相同,参数类型与个数不同 | 方法名称、参数类型、返回值全部相同 |
权限 | 没有要求 | 被重写的方法不能拥有更严格的权限 |
范围 | 发生在一个类中 | 发生在继承&实现类中 |