重写与重载的区别:
-
重载(overload ):
存在于同一个类中。与修饰符无关,与final无关,与返回类型无关,方法名相同,参数列表不同(个数,类型),与异常无关。
代码演示: 接下来我会用最简单的代码来解释重载的使用:
/**
* @program: javase
* @Description TODO
* @author: 90420
* @create: 2020-12-22 20:33
**/
public class OverLoad {
//实现方法的重载
public void run(){
System.out.println("快跑");
}
public void run(int speed){//方法的重载
System.out.println("你的跑步速度为:"+speed+"米");
}
public static void main(String[] args) {
OverLoad o=new OverLoad();
o.run();//表示调用第一个方法
o.run(100);//将参数传入第二个重载方法
}
}
-
重写(override) :
存在于子类和父类之中。子类修饰符不能比父类的严格,final类型的方法不能重写,返回值相同,方法名相同,参数列表相同,子类所抛出的异常等级不能比父类的更大。
如果父类私有的方法,子类拥有方法名相同的方法,子类不属于重写父类的方法,该方法属于子类的新方法。
重写方法的展示:
/**
* @program: javase
* @Description TODO
* @author: 90420
* @create: 2020-12-22 20:42
* //实现方法的重写
**/
public class OverRide {
public void father(){
System.out.println("调用父类的father方法");
}
}
class son extends OverRide{//实现继承关系
@Override //重写父类的方法
public void father() {
// super.father(); 使用super调用父类的方法
System.out.println("调用了子类的father方法");
}
public static void main(String[] args) {
OverRide f=new OverRide();//将父类引用指向了子类对象
f.father();//所以调用的是父类的father()方法
OverRide son=new son();//将父类引用指向了父类对象
son.father();//所以调用的是子类重写的father()方法
}
}
在此补充一点:如果将父类的方法修饰符改成private那么子类的father()方法属于子类自己的方法并不属于方法的重写