I have a question from the OCA study guide, chapter 5 question 15:
Which of the following is true about concrete subclass?
b. A concrete subclass must implement all inherited abstract methods.
c. A concrete subclass must implement all methods defined in an inherited interface.
I don't understand why option B is correct whilst C is incorrect. According to the book option C is incorrect because a superclass could have implemented the methods. But wouldn't the same also apply to option B? All methods in interfaces are abstract and they can could be implemented by the superclass (whether concrete or even abstract) rather than the subclass. Would someone be able to explain this one?
The key is what makes an (inheriting) subclass concrete? A lack of undefined methods makes a subclass concrete. Option B has a laser focus on defining only the undefined methods. Whereas Option C blindly assumes that even if undefined methods were defined in one or more middle classes, that these undefined methods would still need to be again redefined for an (inheriting) concrete subclass. This would not make sense of course, because once a method has initially been defined, then that method is no longer abstract because the method is no longer undefined.