JRoch- you're thinking of a very small and unusual special case which can be interpreted several different ways. Note that the statement does not say "all" or "always" - it describes the general behavior of interfaces. And 99% of the time it's correct - that's good enough for me since it didn't say "always". Even if it had said "always" though, I think I would still agree with it. The type of "functionality" being talked about is implementing methods. If there aren't any methods to implement, it's meaningless to talk about whether they are "required" or not. The only "functionality" that Serializable has is that it allows "instanceof Serializable" to return true. You "implement" this functionality in a class the moment you write "implements Serializable" in the declaration - you've just implemented the interface. I don't think that counts as real "functionality", but if it does, then it's just as much work "implementing" it in a class as there is in declaring the interface it in the first place. The class was required to implement all the functionality of the interface, and it did, because there was no functionality other than the name itself, and the two words "implements Serializable" took care of that.
I hope that made sense. I think we could go in circles on this one indefinitely - it's easiest to just realize that this was
not the sort of situation Marcus was thinking of when he wrote the
test, and I doubt it's what the vast mojority of question readers were thinking of either. So it's best to just ignore this issue, I think.