Question sur Classe abstraites en Java ?

Ulrik18 -  
 Ulrik18 -
Bonjour,

Je suis débutant en programmation JAVA. Je viens de découvrir le concept de classes abstraites plutôt intéressant.
Bon, mais je me rend compte qu'il est possible de définir une classe abstraite sans y définir une seule méthode abstraite. Je me demande à quoi ça peut bien servir ?

Merci pour vos réactions !!!
A voir également:

9 réponses

biboo
 
L'intérêt est, quand tu crées deux classes qui héritent de cette classe abstraite, de définir des actions différentes dans chacun de ces classes.
0
tsanta Messages postés 73 Date d'inscription   Statut Membre Dernière intervention   2
 
pourkoi on cree alors interface et puis class abstraite!!Pkoi pas tout simplement classe abstraite!!
0
Ulrik18
 
Merci pour ta réponse biboo.

Mais ce que tu dis, ça resterait également possible si la classe de base n'est pas abstraite (vu qu'elle n'a aucune méthode abstraite).

Pour mieux me faire comprendre :

Je crée une classe A, abstraite avec juste des méthodes concrètes - aucune méthode abstraite !
Résultat : la classe A ne peut être instanciée. OK !

Mais A quoi ça peut servir ? parce qu'on peut créer une classe B qui hérite de A, qui n'est pas abstraite, et qui n'ajoute aucune méthode. En instanciant B, c'est exactement comme ci on instanciait A.

Je me dis qu'il y a peut être une autre utilité ? ou peut être une mauvaise compréhension de ma part !
0
Ulrik18
 
Tantsa,
On crée les interfaces pour pallier à l'incapacité du Java à implémenter l'héritage multiple.
Je m'explique : On peut bien créer une classe abstraites avec toutes ses méthodes abstraites (presqu'une interface). La classe qui implémentera ces méthodes va hériter d'elle et si elle veut hériter d'une autre classe alors ? l'héritage multiple est impossible. Hors il est possible à une classe d'implémenter plusieurs interfaces tout en héritant d'une et une seule classe.
Les interfaces rendent donc (en quelques sortes) possible l'héritage multiple.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tsanta Messages postés 73 Date d'inscription   Statut Membre Dernière intervention   2
 
ne t´inquietes pas !t´es pas le seul a avoir faire face avec ca!Pour moi aussi c´est tellement difficile de l´y penser!!!Je suis aussi debutante!!lool
bye
0
tsanta Messages postés 73 Date d'inscription   Statut Membre Dernière intervention   2
 
merci pour ton explication Ulrike!!
0
chfh
 
Salut,

Entre interface et héritage de classe il y a une différence sémantique essentielle.

L'héritage sert à définir une relation de type 'est une ...' (ou 'est un ...'). P. ex. un Chien est un Animal.

L'interface est un contrat passé entre deux classes : l'une indique qu'elle peut travailler avec une classe qui sait faire ceci ou cela. P. ex. la classe TreeSet sait gérer des objets qui peuvent être ordonnés (implémentent l'interface Comparable). Les chaines de caractères (classe String) et les entiers (classe Integer) implémentent chacune l'interface Comparable et peuvent donc être utilisées l'une et l'autre dans des conteneurs de type TreeSet. Ce n'est pas pour autant que l'une dérive de l'autre (et pour cause, un Integer n'est pas un String).

Cordialement
0
Ulrik18
 
Personne n'a de réponse à ma question ? (sans vouloir mettre la pression).
0
Ulrik18
 
Merci pour la précision chfh !!!
0