子类方法覆盖父类方法,必须要保证权限大于等于父类权限
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 |
本文探讨了Java中子类如何覆盖父类方法,强调子类覆盖方法时权限必须不低于父类。例如,子类`Zi`尝试覆盖父类`Fu`的`public void method()`,若无修饰符则会导致编译错误,因为无修饰符的成员在不同包中默认为包级私有。同时,解释了访问控制权限的规则,包括`public`、`protected`、无修饰符和`private`在不同范围的可见性。
1万+

被折叠的 条评论
为什么被折叠?



