2013-07-14 3 views
0

Я чувствую, что это основной вопрос с некоторым трюком.
Я хочу расширить функциональность ActionBar, при поиске кода ActionBar получается, что ActionBar является абстрактным классом, а реальный экземпляр класса - ActionBarImpl.
Этот шаблон с абстрактным и Impl для реализации широко используется в исходном коде Android.
Сайт разработчиков не останавливается на деталях, но всегда описывает абстрактный класс, как если бы он был реализованным классом.
Я вижу, что с жесткой точки зрения на языке Java я должен расширить ActionBarImpl, иначе я не смогу вызвать методы super, но я никогда не видел примера, расширяя классы <class>Impl.
Справка.Какой класс следует расширять, AcionBar или ActionBarImpl?

ответ

2

Единственная разница между абстрактом и реализацией в этом случае скорее всего будет абстрактным методом (методами). Если поведение по умолчанию, предоставляемое классом реализации, приемлемо, я бы сказал, что это расширение и переопределить другие методы, которые вам нужны.

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

+0

ОК, спасибо. Я был немного нерешительным, потому что я никогда раньше не видел класс «Импл». – ilomambo

2

Да, вы должны расширить класс Impl для расширений, поскольку, если вы расширяете абстрактный класс, вам необходимо будет обеспечить реализацию абстрактных методов, и если это не ваше намерение «изменить» существующее поведение, а только «расширить» или добавить новое поведение, тогда вам лучше расширить класс Impl.

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

  • Нет связанных вопросов^_^