Inheriting a non-abstract class is a bad idea because by overriding a method, we risk breaking the logic of the entire parent class. You probably have no or incomplete knowledge of how the rest of the class uses the method that you are overriding. To extend a final class, treat it like a black box and decorate it with your own implementation.