2009-11-18 2 views
4

Я немного сомневаюсь по поводу этой линии:Анонимный класс вопрос

анонимный класс не может определить конструктор

то, почему мы можем определить класс анонимной со следующим синтаксисом:

new class-name ([ argument-list ]) { class-body } 
+0

Спасибо всем! Теперь я понял. – Javadoubts

ответ

9

Вы не определяете конструктор в анонимном классе, вы вызываете конструктор из суперкласса.

Вы не можете добавить подходящий конструктор для анонимного класса, однако вы можете сделать что-то подобное. А именно блок инициализации.

public class SuperClass { 
    public SuperClass(String parameter) { 
     // this is called when anonymous class is created 
    } 
} 

// an anonymous class is created and instantiated here 
new SuperClass(parameterForSuperClassConstructor) { 
    { 
     // this code is executed when object is initialized 
     // and can be used to do many same things as a constructors 
    } 

    private void someMethod() { 

    } 

} 
3

Ваш пример создает анонимный подкласс из class-name, и вы не разрешается создавать конструктор специфичные для вашего анонимного класса. Список аргументов, который вы указываете, совпадает с списком аргументов для конструктора class-name.

1

Это означает, что существует абстрактный класс, называемый class-name с определенным конструктором. Вы используете этот конструктор в своем анонимном классе, похожий на использование super() в конструкторе подкласса.

Смежные вопросы