Java - определение встроенного класса

Я видел пару подобных примеров на Java и надеюсь, что кто-нибудь сможет объяснить, что происходит. Похоже, что новый класс можно определить встроенным, что мне кажется очень странным. Ожидается первая строка распечатки, поскольку это просто toString. Однако, похоже, что 2-я функция может быть переопределена встроенной. Есть ли для этого технический термин? Или любую документацию, которая углубляется? Спасибо!

Если у меня есть следующий код:

public class Apple {
    public String toString() {
        return "original apple";
    }
}

public class Driver {
    public static void main(String[] args) {
        System.out.println("first: " + new Apple());
        System.out.println("second: " + 
            new Apple() {
                public String toString() {
                    return "modified apple";
                }
            }
        );
    }
}

Код выводит:

first: original apple
second: modified apple
10
задан lots_of_questions 18 January 2012 в 16:11
поделиться