方法的重写

1.什么是方法的重写?

子类继承父类之后,就拥有了符合权限的父类的属性和方法,但是当父类的方法不符合子类的要求的时候,子类也可以重新的书写自己想要的方法。

所以,方法的重写,也叫方法的覆盖,即子类继承父类的方法后,由于父类的方法不满足子类的需求,子类重新书写该方法。

2.方法重写的条件

前提条件:必须是子类,才能重写父类中的具有继承权限的方法。

从书写一个方法的顺序要求:

权限修饰符必须大于或者等于父类的权限修饰符;
方法名、返回值类型、参数一致;
抛出的异常必须比父类的要小。

在第4点有每一个不符合的错误。

3.方法重写实例

父类:

package com.dh.oop;

public class Parent {

    public void print(){
        System.out.println("我是爸爸");
    }
}

子类:

package com.dh.oop;

public class Son extends Parent{
    
}
  • 当子类没有重写父类的方法的时候,new一个子类对象,调用该方法:
package com.dh.oop;

public class OverrideDemo {

    public static void main(String[] args) {

        Son son = new Son();
        son.print();
    }
}

结果:

因为此时子类没有该方法,但是继承了父类的方法,所以调用的是父类的方法。

现在子类中重写该print方法:

package com.dh.oop;

public class Son extends Parent{

    @Override
    public void print() {
        System.out.println("我是儿子");
    }
}
  • 当子类重写了父类的方法之后,new子类对象,调用该方法:

    (小tip:alt+ins可以直接选择并生成想重写的方法)

package com.dh.oop;

public class OverrideDemo {

    public static void main(String[] args) {

        Son son = new Son();
        son.print();
    }
}

结果:

因为此时在子类中重写了父类的方法,所以子类对象调用的就是子类的方法了。

4.不满足重写方法的情况

  • 权限修饰符小于父类:

  • 返回值不一样:

  • 方法名不一样:

  • 参数不一样:

  • 抛出的异常大于父类:

5.重写与重载的区别

  • 重载:重载发生在同一个类中,方法名相同,参数类型不同(顺序、个数、类型),通过参数的类型来区别调用的是哪一个方法。
  • 重写:重写发生在子类中,方法名、返回值、参数相同,权限修饰符要大于或等于父类方法中的权限修饰符,抛出的异常要小于父类方法中抛出的异常,通过调用的对象来区别调用的是父类的方法还是子类的方法。

本人水平有限,若有错误,请指出,感激不尽~

posted @ 2021-01-21 09:51  deng-hui  阅读(3764)  评论(0编辑  收藏  举报