方法的深度理解

方法的重写

方法的重写

  • 子类的方法必须与父类的方法一致,方法体不同。

  • 参数列表必须相同

  • 修饰符可以扩大,但是不可以缩小

    • public > protected >default >private
  • 抛出的异常范围可以缩小,但是不能扩大 : ClassNotFoundException–>Exception(大)

  • 重写是方法的重写,与属性无关

  • 重写方法只与非静态方法有关,与静态方法无关(静态方法不能被重写)

  • 被 **static(属于类 ,不属于实例),final(常量方法),private(私有的)**修饰的方法不能被重写

`public class B {
public static void test(){ //静态方法
System.out.println("B==>test()");
}
}

``

public class A extends B{ //继承 public static void test(){ System.out.println("A==>test()"); } }

重写:子类的方法必须跟父类保持一致 :方法体不同

被**static(属于类,不属于实例),final(常量方法),private(私有)**修饰的方法不能重写

为什么重写?

  1. 重写:子类继承父类以后,可以对父类中同名同参数的方法进行覆盖操作。

  2. 应用:重写以后,当创建子类对象以后,通过子类对象调用父类中同名同参数的方法时,实际上执行的是子类重写父类的方法。

如何区分方法的重写跟重载 ?

方法重载:

  1. 在同一个类中

  2. 方法名相同,但是行参列表不同

  3. 方法的返回值,访问修饰符任意

  4. 与方法参数名无关

方法的重写:

  1. 有继承关系的子类中

  2. 方法名相同,参数列表相同(参数顺序,类型,个数),方法的返回值要相同

  3. 访问修饰符,访问范围子类需要大于父类的访问范围

  4. 与方法的参数名无关

方法重写的更多理解(override/overwrite)

  1. 方法重写 :子类继承父类以后,可以对父类同名同参数的方法进,行覆盖操作

  2. 应用: 重写以后,当创建子类对象时,通过子类对象调用父类同名同参数的方法时,实际执行的是子类重写父类的方法

  3. 重写的规定 :

    1. 权限修饰符 返回值类型 类名(行参列表 )throws 异常的类型{

      //方法体

      }

      约定俗称:子类中叫重写的方法,父类中叫被重写的方法。

      ①子类重写的方法名和行参列表和父类被重写的方法名和行参列表相同。

      ②子类重写的方法的权限修饰符不小于父类被重写的方法的权限修饰符。

      子类不能重写父类中声明为private的权限的方法。

      ③返回值类型:

      父类被重写的方法的返回值是void,则子类中重写的方法的返回值也是void。

      父类被重写的方法的返回值是A类型,则子类中重写的方法的返回值类型是A类型或者是A类的子类。

      父类被重写的方法的返回值是基本数据类型(比如double),则子类重写的方法的返回值必须是相同的。

      ④子类重写的方法抛出的异常类型不大于父类被重写的方法抛出的异常。(具体细节在异常处理)

      ⑤子类和父类中同名同参数的方法要么都声明为非static(考虑重写),要么都声明为static(不考虑重写)

posted @ 2022-02-03 20:47  爱笑的Gao  阅读(145)  评论(2编辑  收藏  举报