【发布时间】:2014-12-24 17:45:47
【问题描述】:
我有以下场景 - 一个包含内部抽象类的类:
class A {
private int Afield;
public void Amethod() { ... }
protected abstract class InnerOfA {
...
protected abstract void doSomething();
}
}
现在在另一个类的方法中,我想创建一个 匿名类 扩展 InnerOfA:
class B {
public void Bmethod(A instanceOfA)
{
A.InnerOfA instance = instanceOfA.new InnerOfA()
{
@Override
protected void doSomething()
{
// Here I want to use the private fields and methods of A.
}
}
}
}
但由于某种原因(我不明白),我不能在 doSomething 的覆盖内使用 Afield 和 Amethod。为什么会这样?匿名实例在内部应该仍然属于instanceOfA,因此应该能够访问它的内部。
【问题讨论】:
-
重读
private的定义。B(及其匿名内部类)不应该能够访问private成员。
标签: java class inner-classes