Déclarer qu'une classe réalise une (ou plusieurs) interface(s) comporte une obligation : il faut alors que la classe définisse chacune des méthodes déclarées dans cette (ou ces) interface(s), ou bien en hérite, nécessairement comme des méthodes publiques.
class Cercle implements Forme { Point centre; double rayon; Cercle(Point centre, double rayon) { this.centre = centre; this.rayon = rayon; } public double surface() { return Math.PI * rayon * rayon; } }
Si une classe, déclarée comme réalisation d'une interface, ne définit pas une méthode déclarée par cette interface, ou n'hérite pas d'un telle méthode, cette classe est considérée comme abstraite. Le compilateur émet alors un message d'erreur à moins qu'elle ne soit précédée du mot clé abstract.