Он называется анонимным локальным производным классом (или «анонимным внутренним классом», хотя есть разница между просто «внутренним» и локальным [все локальные классы являются внутренними; не все внутренние классы локальны ; подробнее ниже]). Код в фигурных скобках является частью определения класса анонимного класса.
Это
ClassA a = new ClassA(){@Override public void funcion(){ atributeClassB = whatever } } ;
... фактически эквивалентно этому:
ClassA a = new SubClassA();
... где SubClassA
определен внутри класса, содержащего:
class SubClassA extends ClassA {
@Override public void funcion(){ atributeClassB = whatever }
}
... хотя это немного больше, чем это, потому что анонимный класс в вашем примере определен внутри метода (это «локальный» или «внутренний»), больше в различных разделах, начинающихся здесь .