Это у вас не анонимный класс, а внутренний класс. Обращаться к нему можно из любого места внешнего класса, ну и из самого себя.
А анонимный класс, как следует из названия, имени не имеет. И создается например из интерфейса, реализуя его методы на месте.
Внутренние классы могут быть закрытыми (private/protected) по умолчанию и видны будут только из внешнего класса, либо быть публичными (public static) и быть доступны всему приложению. Обычно используются, чтобы не раздувать структуру файлов-классов и для внутреннего применения в качестве временных хранилищ и оберток.
Анонимный же класс создается на месте использования и служит для применения в конкретном месте приложения. В примере ниже мы в переменную
threadзаписываем инcтанс
нового класса, наследуемого от
Thread с перегруженным методом
runclass MyThread
{
public static void main(String[] args)
{
// Создаем расширение стандартного класса Thread с переопределением метода run()
Thread thread = new Thread()
{
public void run()
{
System.out.println("Child Thread");
}
};
thread.start();
System.out.println("Main Thread");
}
}