This seems to be more a problem of semantics than of Java concepts. "A final class may not have any abstract method(s)," does not mean, "A final class may have abstract method(s)". Those two sentences have opposite meanings. The first is true, and the second is false.
As Greg suggested, this seems to be a semantics issue.
Perhaps you're reading this as, "A final class might not have any abstract methods." This is still a true statement. But you could be interpreting this to imply that a final class typically does have abstract methods, although it's not required to (i.e., it "might not"). This would be a misinterpretation from reading too much into the statement.
Better wording might have been: "A final class cannot have any abstract methods." This is (clearly?) true.
Joined: Mar 20, 2006
Thanks every one for correcting me. Dont mind i did not think it in depth as i was a little bit curious to give answer quickly