重写(Override)——Java面向对象基础(16)

一、重写简介

  1.子类重新写父类的方法,相当于覆盖父类的方法,自己编写替换掉之前的。

  2.条件:

    (1)重写是在子类继承父类的情况下使用

    (2)子类的方法名称必须和父类相同

    (3)方法的参数类型、个数、顺序要一致

    (4)返回的参数类型必须等于父类返回类型(子类返回的类型小于父类的返回类型)

    (5)访问修饰符必须不小于父类中的访问修饰符

    (6)子类中重写的异常不能抛出比父类更多的异常

  3.规范使用Override

public class Father{
    int money=500;
    public void fatherDo(){
        System.out.println("父类的方法");
    }
}
public class Son extends Father{
    int money=300;
    @Override
    public void fatherDo(){
        System.out.println("重写父类的方法");
        
    }
}

  4.关于2中的(4)

    (1)这里返回类型之间的大小指的是,类的继承关系的顺序父类大于子类。而非数据类型的大小。

     (2)需要注意的是八大基本数据类型与其他引用类型应该分开讨论

 

 

   5.关于2中的(5)

    1.需要注意,如果父类中的方法为私有类型(private)那么是无法重写的。私有方法只有父类自身可以使用,子类无法调用。

     2.私有方法只有父类自身可以使用,子类无法调用。如果子类写一个一样方法名(包括参数)的方法,那么就不要使用@override,因为当前不是重写,而是相当于写一个新的方法

 

 

 二、方法重写(Override)和方法重载(Overload)的区别

  1、方法重载Overload关注当前类中的方法,而方法重写是关注子类与父类(继承)。

  2、方法重载Overload中方法名称相同,但是参数个数、类型、顺序不同。在方法重写Override中方法名称、参数个数、类型、顺序必须相同。

  3、方法重载Overload不需要关注返回类型,但是在方法重写Override中子类的返回类型必须与父类相同(子类返回的类型小于父类的返回类型)。

  4、方法重载Overload不需要关注访问权限修饰符,但是在方法重写Override中子类的访问权限修饰符必须等于或者增大,不能缩小。

原文地址:https://www.cnblogs.com/Unlimited-Rain/p/12489475.html