Java方法重写的注意事项
子类方法覆盖父类方法,必须要保证权限大于等于父类权限
public class Fu { void show() { System.out.println("Fu show"); } public void method() {} } public class Zi extends Fu{ public void show() { System.out.println("zi show"); } // void method() {} 编译出错 无修饰符 而父级的method是public权限,所有编写出错,无法覆盖 }
需要特别说明“无修饰符”这个情况,子类能否访问父类中无修饰符的变量/方法,取决于子类的位置。如果子类和父类在同一个包中,那么子类可以访问父类中的无修饰符的变量/方法,否则不行。
权限:
修饰符 | 类内部 | 同个包(package) | 子类 | 其他范围 |
public | Y | Y | Y | Y |
protected | Y | Y | Y | N |
无修饰符 | Y | Y | Y或者N(见说明) | N |
private | Y | N | N | N |