У меня есть следующий сценарий - класс, который содержит внутренний абстрактный класс:Создать анонимный класс, расширяющий внутренний абстрактный класс
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.
}
}
}
}
Но по какой-то причине (я не понимаю) я не могу использовать Afield
и Amethod
внутри отключением doSomething
. Почему это происходит? Анонимный экземпляр должен по-прежнему находиться внутри instanceOfA
и, следовательно, должен иметь доступ к его внутренним элементам.
Перечитайте определение 'private'. «B» (и его анонимные внутренние классы) не должны иметь доступ к «частным» членам. –