Une méthode abstraite est signalée par le modificateur abstract placé au début de son en-tête. Une telle méthode n'a alors que son prototype, c'est-à-dire son type de retour suivi, de son nom, suivi de la liste de ses paramètres entre des parenthèses, suivi d'un point-virgule.
Les classes abstraites
Elle n'est donc pas instanciable, mais sert avant tout à factoriser du code. Une classe qui hérite d'une classe abstraite doit obligatoirement implémenter les méthodes manquantes (qui ont été elles-mêmes déclarées « abstraites » dans la classe parente).
Le mécanisme des classes abstraites permet de définir des comportements (méthodes) dont l'implémentation (le code dans la méthode) se fait dans les classes filles. Ainsi, on a l'assurance que les classes filles respecteront le contrat défini par la classe mère abstraite. Ce contrat est une interface de programmation.
La classe abstraite peut avoir un modificateur d'accès. Il est préférable d'utiliser l'interface lorsque plusieurs implémentations partagent uniquement la signature de méthode. Il doit être utilisé lorsque différentes implémentations du même type partagent un comportement commun.
une classe est abstraite si elle contient au moins une méthode abstraite ; elle ne peut pas être instanciée, mais ses sous-classes non abstraites le peuvent. une classe abstarite est déclarée avec le modificateur abstract. une classe est abstraite ne peut être instanciée.
Le polymorphisme est un mécanisme important dans la programmation objet. Il permet de modifier le comportement d'une classe fille par rapport à sa classe mère. Le polymorphisme permet d'utiliser l'héritage comme un mécanisme d'extension en adaptant le comportement des objets.
Définition du polymorphisme
Le nom de polymorphisme vient du grec et signifie qui peut prendre plusieurs formes. Cette caractéristique est un des concepts essentiels de la programmation orientée objet. Alors que l'héritage concerne les classes (et leur hiérarchie), le polymorphisme est relatif aux méthodes des objets.
La première particularité d'une classe abstraite, c'est qu'elle ne peut être instanciée (et donc créer un objet). De cette affirmation, on en déduit logiquement qu'une classe abstraite est déclarée afin d'être dérivée par des classes concrètes. Une classe abstraite se comporte comme une classe concrète typique.
Une méthode static est une méthode qui n'agit pas sur des variables d'instance mais uniquement sur des variables de classe. Ces méthodes peuvent être utilisées sans instancier un objet de la classe. Les méthodes ainsi définies peuvent être appelées avec la notation classe.
Une classe abstraite peut contenir ou non des méthodes abstraites. Une classe concrète ne peut pas contenir de méthode abstraite. Une classe abstraite ne peut pas être déclarée finale. Une classe concrète peut être déclarée finale.
Créer une interface peut-être utile si ces dernières ne devraient pas être accessibles. Lorsque du code interagit avec le système de fichier, du réseau ou n'importe quel système tiers, la mise en place d'une interface est essentielle pour se découpler de l'implémentation et faciliter l'écriture de tests.
Les interfaces servent à créer des comportements génériques: si plusieurs classes doivent obéir à un comportement particulier, on créé une interface décrivant ce comportement, on est la fait implémenter par les classes qui en ont besoin.
Une méthode d'instance c'est une méthode qui s'applique à un objet, par exemple il est exclus d'écrire [NSString init] car init est une méthode d'instance, donc qui doit s'appliquer sur un objet et non sur une classe comme ici la classe NSString.
Formellement une classe abstraite n'est pas différente d'une classe normale. Simplement, elle est déclarée en ajoutant le mot-clé abstract , comme dans l'exemple suivant. On peut déclarer autant de méthodes abstraites que l'on veut dans une classe abstraite, y compris ne pas en déclarer du tout.
La programmation orientée objet obéit à des principes. Les 4 principaux principes sont l'encapsulation, l'héritage, le polymorphisme et la généricité.
Le mot-clé void signifie que la méthode ne renvoie rien (elle ne renvoie rien si vous exécutez la méthode). Si vous voulez que votre méthode renvoie quelque chose, remplacez simplement le mot void avec un type de donnée (type primitif ou une référence) de l'objet (ou du type primitif) que vous souhaitez renvoyer.
En java on déclare qu'une classe implémente une interface avec le mot clé implements . Une interface définit un type (comme une classe) et les classes qui implémentent cette interface sont donc des sous-types.
Pour appeler le constructeur d'une classe, il suffit de préciser la valeur de ses paramètres effectifs dans l'instruction d'instanciation. Par exemple, pour créer une nouvelle voiture d'immatriculation "4017 ZX 67" avec le constructeur défini précédement, on pourra écrire: LaVoiture = new Voiture ("4017 ZX 67");
L'abstraction est l'un des concepts clés dans les langages de programmation orientée objet (POO). Son objectif principal est de gérer la complexité en masquant les détails inutiles à l'utilisateur.
En Programmation Orientée Object (POO), la généricité est un concept permettant de définir des algorithmes (types de données et méthodes) identiques qui peuvent être utilisés sur de multiples types de données. Cela permet donc de réduire les quantités de codes à produire.
En Java, l'héritage est indiqué par le mot clé extends après le nom de la classe. On dit donc qu'une classe en étend une autre. La classe qui est étendue est appelée classe mère ou classe parente et la classe qui étend est appelée classe fille ou classe enfant.
La surcharge d'une méthode ou d'un constructeur permet de définir plusieurs fois une même méthode/constructeur avec des arguments différents. Le compilateur choisit la méthode qui doit être appelée en fonction du nombre et du type des arguments .
Un objet est une instance d'une classe, qui est l'outil fondamental de programmation en Java. Une classe peut aussi être considérée comme une description de ce qu'il faut faire pour créer un objet. Les classes sont composées de méthodes et d'attributs qui peuvent être public, private ou protected.
L'objectif de la programmation orientée objet est de se concentrer sur l'objet lui-même et les données, plutôt que sur la logique nécessaire et les actions à mener pour faire cette manipulation.
Les classes statiques sont scellées (sealed) et ne peuvent par conséquent pas être héritées. Elles ne peuvent hériter d'aucune classe à part Object. Les classes statiques ne peuvent pas contenir de constructeur d'instance. Toutefois, ils peuvent contenir un constructeur statique.