【发布时间】:2019-09-25 15:17:52
【问题描述】:
给定以下父类:
public class AbstractParent<T> {
abstract protected void doSomething();
}
以及以下子类:
public class DelegatingChildClass<T,U> extends AbstractParent<T> {
AbstractParent<U> delegate;
public DelegatingChildClass(AbstractParent<U> delegate) {
this.delegate = delegate;
}
@Override
protected void doSomething() {
delegate.doSomething();//<--- Problem line
}
}
我对受保护方法的理解是访问仅限于:
- 与声明类在同一包中的类
- 扩展声明类的类
由于 DelegatingChildClass 扩展了 AbstractParent,我的期望是委托的 doSomething() 方法可以访问。但是编译器抱怨它具有受保护的访问权限。这是编译器错误吗?还是我对受保护的访问修饰符应该如何工作有错误的理解?
【问题讨论】:
标签: generics protected siblings