Java 创建扩展内部抽象类的匿名类
我有以下场景-一个包含内部抽象类的类:Java 创建扩展内部抽象类的匿名类,java,class,inner-classes,Java,Class,Inner Classes,我有以下场景-一个包含内部抽象类的类: class A { private int Afield; public void Amethod() { ... } protected abstract class InnerOfA { ... protected abstract void doSomething(); } } 现在,在另一个类的方法中,我想创建一个匿名类,扩展InnerOfA: class B { public voi
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
)
public void Bmethod(final A instanceOfA)
你可以打电话
@Override
protected void doSomething()
{
instanceOfA.Amethod();
}
但是您不能访问远场
,因为如果您定义,它是私有的
public void Bmethod(final A instanceOfA)
你可以打电话
@Override
protected void doSomething()
{
instanceOfA.Amethod();
}
但是您无法访问
Afield
,因为它是私有的请重新阅读private
的定义B
(及其匿名内部类)不应能够访问private
成员。请重新阅读private
的定义B
(及其匿名内部类)不应能够访问private
成员。