L'utilisation du modificateur abstract dans une déclaration de classe signifie qu'une ou plusieurs des méthodes à l'intérieur du corps de la classe sont déclarées comme abstraites.
abstract modificateur NomClasse { modificateur Type NomMethode(); ... }
Si une méthode à l'intérieur de la classe est déclarée avec le modificateur abstract, alors cette classe doit être définie explicitement comme abstraite.
abstract modificateur NomClasse { abstract modificateur Type nomMethode([Type Arguments, ...]); ... }
Les classes déclarées avec le modificateur abstract ne peuvent être instanciées. Les classes abstraites contraignent à fournir un bloc d'instructions pour chacune de leurs méthodes abstraites à l'intérieur d'une nouvelle classe dérivée, laquelle pourra être instanciée.
abstract modificateur NomClasse { modificateur NomMethode(); ... } modificateur_acces ClasseDerivee extends NomClasse { modificateur_acces Type nomMethode() { // Bloc d'instructions... } ... }
Une classe dérivée d'une classe abstraite doit impérativement implémenter toutes les méthodes abstraites de cette dernière, sinon elle doitporter le modificateur abstract dans sa déclaration.
Une interface pouvant être considérée comme étant une classe abstraite, une classe qui en implémente une doit être déclarée abstraite si toutes les méthodes de l'interface n'y sont pas implémentées.
Les classes abstraites sont utilisées pour fournir des méthodes et des variables communes à l'ensemble de leurs sous-classes.