浅谈方法重写 super

  自己梳理整理一下留作以后回顾

          1.方法重写(Override),也可称为方法覆盖,是一种子类包含与父类同名方法的现象。

          2.规则:“两同两小一大”规则。①“两同”    即方法名相同、形参列表相同。

                                                                ②“两小”    子类方法返回值类型应比父类方法返回值类型更小(返回值类型必须是父子关系才行,基本类型之间没有父子关系)或相等;

    子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等。

“一大”   子类方法的访问权限应比父类方法的访问权限更大或相等。

 3.注意: ①覆盖方法和被覆盖方法要么是【类方法】(static修饰),要么都是【实例方法】(不用static修饰)。不能一个是实例方法,一个是类方法,否则会报错。

      Java【类方法】形式上可以重写  —— 只要子类不加@Override关键字修饰即可编译通过 。但从本质来说不是Java的重写,因为 【类方法】只与类相关,不与具体实现相关,声明的是什么类,则引用相应的类方法(本来静态无需声明,可以直接引用)。

 ②子类覆盖父类方法后,如果想调用父类中被覆盖的方法,可使用super(被覆盖的是实例方法)或父类类名(被覆盖的是类方法)来调用。

 ③父类方法用private修饰后,该方法对其子类是隐藏的,不能重写该方法 。        



      super用super可以指向被隐藏的父类的同名成员 。  

                 super限定   强制该对象调用它从父类继承得到的实例变量或实例方法。

                                      注意:①super不能出现在static修饰的方法中。

 ②通过super.限定来访问父类中被覆盖的实例变量和实例方法。

                super调用   在子类构造器中显式调用父类的构造器的初始化代码。

     注意 :①super调用和this调用不能同时出现在同一个构造器中。

  ②子类构造器总会调用父类构造器一次

                                                      ——子类构造器执行体中没有super调用和this调用,系统会在执行子类构造器之前隐式调用父类无参数的构造器。

              ——子类构造器使用super显式调用父类构造器,系统将根据super调用里传入的实参列表调用父类对应的构造器。

      ——-子列构造器执行体的第一行代码使用this显式调用奔雷中重载的构造器,系统将根据this调用里传入的实参列表调用本类中的另一个构造器,                                                                  执行本类中另一个构造器是即会调用父类的构造器。



有待补充。。。。。。。。。。。。。。。。。。

你可能感兴趣的:(java,java)