Sta*_*nko 7 java overriding access-modifiers
覆盖方法时,不允许降低继承方法的可见性.根据下表,protected比以下更容易访问no modifier:
| Class | Package | Subclass | World
————————————+———————+—————————+——————————+———————
public | y | y | y | y
————————————+———————+—————————+——————————+———————
protected | y | y | y | n
————————————+———————+—————————+——————————+———————
no modifier | y | y | n | n
————————————+———————+—————————+——————————+———————
private | y | n | n | n
y: accessible
n: not accessible
但是当我尝试覆盖f()(参见SubClass)然后我得到错误:
无法从MyInterface中降低继承方法的可见性.
MyInterface中的方法没有访问修饰符,SubClass中的方法受到保护,因此更易于访问.我在这里错过了什么?
public interface MyInterface {
void f();
}
public abstract class MyClass {
protected abstract void f();
}
public class SubClass extends MyClass implements MyInterface{
protected void f() { }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1625 次 |
| 最近记录: |