Nous avons vu en introduction de ce document que Java était un langage objet, sans vraiment détailler ce que cette notion recouvrait. Nous avons déjà utilisé les notions d’héritage et de surcharge en les citant explicitement, ainsi que de polymorphisme, même si le mot n’a pas été utilisé. Les notions d'héritage et de polymorphisme sont des notions complexes, qui reposent sur des théories dont l'exposé dépasse complètement le cadre de ce document. Nous allons donc nous borner à décrire et expliquer ce dont on a besoin en pratique, sur des exemples concrets.
Java supporte toutes ces notions, avec quelques restrictions qui lui sont propres, et quelques originalités.