重写于重载的区别

重写与重载的区别:

  • 重载(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()方法属于子类自己的方法并不属于方法的重写

上一篇:2021-01-06


下一篇:每日知识点20181216