Я немного сомневаюсь по поводу этой линии:Анонимный класс вопрос
анонимный класс не может определить конструктор
то, почему мы можем определить класс анонимной со следующим синтаксисом:
new class-name ([ argument-list ]) { class-body }
Я немного сомневаюсь по поводу этой линии:Анонимный класс вопрос
анонимный класс не может определить конструктор
то, почему мы можем определить класс анонимной со следующим синтаксисом:
new class-name ([ argument-list ]) { class-body }
Вы не определяете конструктор в анонимном классе, вы вызываете конструктор из суперкласса.
Вы не можете добавить подходящий конструктор для анонимного класса, однако вы можете сделать что-то подобное. А именно блок инициализации.
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() {
}
}
Ваш пример создает анонимный подкласс из class-name
, и вы не разрешается создавать конструктор специфичные для вашего анонимного класса. Список аргументов, который вы указываете, совпадает с списком аргументов для конструктора class-name
.
Это означает, что существует абстрактный класс, называемый class-name
с определенным конструктором. Вы используете этот конструктор в своем анонимном классе, похожий на использование super() в конструкторе подкласса.
Спасибо всем! Теперь я понял. – Javadoubts