Classes abstraites
La classe abstraite en Java : non instanciable, méthodes abstraites à redéfinir, méthodes concrètes mises en commun, sous-classe concrète ou encore abstraite, et le patron de méthode.
- 17 cartes
- 4 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Mises en situation
Quelques cartes du deck
Classe abstraite : de quoi s'agit-il ?
Voir la réponse
Classe qui sert de modèle commun à ses sous-classes : on ne peut pas en créer d'objet directement, et elle peut laisser des méthodes sans corps.
Elle regroupe ce qui est commun (attributs, méthodes concrètes) sans prétendre représenter un objet complet.
new Forme()est refusé si Forme est abstraite.Forme est une classe abstraite. Quel message le compilateur donne-t-il pour cette ligne ?
```java
Forme f = new Forme();`Forme is abstract; cannot be instantiatedForme is not abstract and does not override abstract method aire() in Formecannot find symbol : constructor Forme()abstract methods cannot have a body
Voir la réponse
Forme is abstract; cannot be instantiatednewsur une classe abstraite est interdit : l'objet serait incomplet. L'autre message, qui ressemble beaucoup, vise une sous-classe concrète qui oublie une méthode abstraite.Une classe qui contient une méthode abstraite doit elle-même être déclarée ….
Voir la réponse
Une classe qui contient une méthode abstraite doit elle-même être déclarée abstract.
Sinon on pourrait créer un objet dont une méthode n'a pas de corps. Le compilateur répond :
Forme is not abstract and does not override abstract method aire() in Forme.Méthode abstraite : de quoi s'agit-il ?
Voir la réponse
Méthode déclarée sans corps, que chaque sous-classe concrète est obligée de redéfinir.
Elle fixe l'obligation sans imposer la manière :
abstract double aire();dit que toute forme a une aire, et c'est chaque forme qui la calcule.Peut-on déclarer abstraite une classe qui n'a aucune méthode abstraite ?
- Oui : cela interdit
newtout en gardant le code commun - Non :
abstractexige au moins une méthode abstraite - Oui, mais seulement avec un constructeur privé
- Non : le compilateur la refuse avec
class has no abstract method
Voir la réponse
Oui : cela interdit
newtout en gardant le code communLe mot
abstractsur une classe interdit seulement de l'instancier. La règle ne va que dans un sens : une méthode abstraite impose une classe abstraite, pas l'inverse.- Oui : cela interdit