【JAVA SE】『重写』和『重载』的区别

温馨提示

大家好我是Cbiltps,在我的博客中如果有难以理解的句意难以用文字表达的重点,我会有配图。所以我的博客配图非常重要!!!

本节的知识点是从我的主体博客中抽出来的,主体博客其实就是起到一个拓展上下文,为所有的知识点体现逻辑顺序的作用。所以,我会把里面有讨论价值的东西单独拉出来,方便大家食用!

欢迎大家指正/补充,加油!

正文开始

重写(Override): 子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名参数列表返回类型(除子类中方法的返回值是父类中方法返回值的子类时)都相同的情况下, 对方法体进行修改或覆盖即外壳不变,核心重写!

  • 发生方法重写的两个方法返回值(除了上面写到的special time和被重写方法返回值类型的子类)方法名参数列表必须完全一致(子类重写父类的方法)
  • 子类方法的访问级别不能低于父类相应方法的访问级别
  • 覆盖的方法所抛出的异常和被覆盖方法的所抛出的异常一致或者是其子类(子类异常不能大于父类异常)
  • privatefinalstatic 修饰的方法不能重写

重载(Overload): 在一个类中,同名的方法如果有不同的参数列表参数类型不同参数个数不同甚至是参数顺序不同)则视为重载。同时,重载对返回类型没有要求,可以相同也可以不同,所以不能通过返回类型是否相同来判断重载

  • 方法名相同,参数列表不同(参数顺序、个数、类型)
  • 方法返回值、访问修饰符任意

注意点与区别总结:

  • 重写实现的是运行时的多态,而重载实现的是编译时的多态
  • 重写的方法参数列表必须相同(一般情况下);而重载的方法参数列表必须不同
  • 重写的方法的返回值类型只能是父类类型或者父类类型的子类,而重载的方法对返回值类型没有要求

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Cbiltps/article/details/122550276