Is extendingSometimes, you inherit from a "base" class that defines the semantics of your type (often abstractShape – Ellipse – Circle). Other times, you inherit simply because it's convenient to do so.
- A superclass may have protected members you want to get access to.
 - It may implement some methods of an interface that you want your class to implement – now, you have fewer methods to be bothered about.
 - It may implement an interface's only method in a way that covers some generic aspects of it and then delegates to its own abstract method that is supposed to do a smaller, easier, implementation-specific part.
 
Is such "convenience inheritance" an anti-pattern?
Here's argument against that.
Since you can't "hide" your class's supertypes from your class's clients, its entire type hierarchy is part of its API, including the "base" class. Clients can store your implementation in a variable of the abstract "base" type. Good luck changing your supertype after thatlater.
 Here's an example. There's a BaseDao class in our codebase. It's not technically abstract but, to the best of my knowledge, it is not directly instantiated anywhere, so you can say it's effectively abstract. Specific DAOs extend from it, inheriting protected convenience methods, for example findWithAppSql().