An annotation type is a special kind of interface. In an interface, all methods are implicitly both public and abstract, but is allowed to explicitly state that a method is public and/or abstract. Declaring an interface method as public or abstract has no effect, however.