7C00.ME/houmu 2015-06-30

Java修饰符与方法重写

Java中修饰符包括注解、native、strictfp、abstract、volatile、transient、final、static、synchronized、public、protected、private。

这篇文章整理Java子类重写父类方法时修饰符的限制和作用。

  1. 注解的情况比较复杂,native、strictfp比较少见,所以暂不讨论。
  2. abstract、volatile、transient不能修饰方法。
  3. final修饰的方法不能被子类重写;父类非final的方法可以在子类中使用final修饰。
  4. static修饰的方法在子类中必须也是static;子类中static的方法不能和父类中非static的方法同名。
  5. synchronized对方法继承没有限制:

    a. 子类重写父类非synchronzied方法时可以声明synchronized,子类方法执行时是synchronized的; b. 子类重写父类synchronized方法时可以不声明synchronized,子类方法执行时是非synchronized的;

  6. public、protected、private 子类重写父类方法不能减小后者的可见性,但可以“扩大”。