Pourquoi RecyclerView.OnScrollListener n'est pas une interface mais une classe abstraite?

À mettre en œuvre sans fin motif à la RecyclerView je veux créer une classe comme

public class EndlessScrollAdapter<VH extends ViewHolder> 
        extends RecyclerView.Adapter<VH> implements RecyclerView.OnScrollListener {
}

Parce que EndlessScrollAdapter devrait être responsable à la fois des données de défilement et de la gestion des événements, c'est la façon la plus pratique à mettre en œuvre.

Mais, parce que dans recyclerview-v7-21.0.3OnScrollListener déclarée comme telle

/**
 * An OnScrollListener can be set on a RecyclerView to receive messages
 * when a scrolling event has occurred on that RecyclerView.
 *
 * @see RecyclerView#setOnScrollListener(OnScrollListener)
 */
abstract static public class OnScrollListener {
    /**
     * Callback method to be invoked when RecyclerView's scroll state changes.
     *
     * @param recyclerView The RecyclerView whose scroll state has changed.
     * @param newState     The updated scroll state. One of {@link #SCROLL_STATE_IDLE},
     *                     {@link #SCROLL_STATE_DRAGGING} or {@link #SCROLL_STATE_SETTLING}.
     */
    public void onScrollStateChanged(RecyclerView recyclerView, int newState){}

    /**
     * Callback method to be invoked when the RecyclerView has been scrolled. This will be
     * called after the scroll has completed.
     *
     * @param recyclerView The RecyclerView which scrolled.
     * @param dx The amount of horizontal scroll.
     * @param dy The amount of vertical scroll.
     */
    public void onScrolled(RecyclerView recyclerView, int dx, int dy){}
}

Je ne peux pas faire EndlessScrollAdapter mettre en œuvre OnScrollListener.

Donc, comme le dit le titre, est-il une bonne raison pour OnScrollListener à une classe plutôt qu'une interface? Parce que je pense qu'il devrait être d'une interface.

source d'informationauteur Onur