New page: The chapter 6 discusses '''protected abstract''' methods and says that removing such method is source compatible (page 89). In fact that was true until Java 5 appeared. However wit...
New page
The [[chapter 6]] discusses '''protected abstract''' methods and says that removing such method is source compatible (page 89). In fact that was true until [[Java]] 5 appeared. However with the newly introduced ''@Override'' annotation this is no longer true.
<source lang="java" snippet="anagram.ui.Anagrams"/>
If you create a new version of public abstract class ''Anagrams'' dropping
either getWordLibrary or getScrambler (or both), the @Override annotation in
AnagramsWithConstructor will cause the compiler to complain:
<source lang="java" snippet="anagram.ui.init"/>
Source compatibility is gone. As an [[API]] designer of public class Anagrams you don't know whether your users (writing class ''AnagramsWithConstructor'') will use @Override. As a result don't even try to remove '''protected abstract''' methods from an [[API]]. It was never good idea anyway and since [[Java]] 5 it is not [[backward compatible]].
-- Rijk van Haaften, Oct 8, 2010