karamilano
Messages postés16Date d'inscriptionjeudi 15 mars 2007StatutMembreDernière intervention 4 avril 2008
-
16 déc. 2007 à 20:57
Utilisateur anonyme -
18 déc. 2007 à 13:32
slt tt le monde
j ai deux ptits problemes :
1==> j arrive pas a distinguer entre une interface et une classes abstraite il me semble qu ils ont ttes les deux les memes fonctionnalités , c qquoi la differnce alors ??
2==>d autre chose c que selon c que j ai lu dans qlq tutoriels c que les deux contiennent des methodes non implémentées , et qui seront implémentées par la suite dans des classes enfants mais je trouve le contraire dans cet exemple ou une classe abstraite contient deja des methodes implémentées c est l exemple : http://www.infres.enst.fr/~charon/coursJava/exercices/corriges/TableauTrieAbstrait.java
alors est ce qu ont peut trouver dans une interface et une classe abstraite des methodes déja impléméntées ..
viru_Lent
Messages postés1Date d'inscriptionmardi 6 février 2007StatutMembreDernière intervention18 décembre 2007 18 déc. 2007 à 01:20
Bonsoir à toi karamilano,
Je ne suis pas certain de pouvoir répondre à ta question mais je vais essayer de t'apporte plus d'éléments sur ces différents points.
Tout d'abord il faut savoir qu'une classe abstraite ne peut être instanciée. C'est à dire que tu ne peux faire un new LaClasseAbstraite(), pour créer une occurence de cette classe.Cependant il est tout a fait possible de pouvoir utiliser ces classes sans devoir redéfinir les methodes qu'elles contiennent.
Les interfaces quant à elles, demandent obligatoirement de redefinir dans la classe qu'elles implémentent toutes leurs méthodes.C'est à dire que si ton interface contient 6 methodes, tu seras obligé de redéfinir ces 6 méthodes dans ta classe même si tu veux te servir que de l'une d'entre elles.
Je te confirme que les interfaces et les classes abstraites ont des methodes propres à elles même. Elles sont juste redéfinies(surchargées) dans les classes qui les nécessitent.
Rien n'empêche également une classe abstraite d'implémenter une interface....ça se complique là:...-)
Toutes les méthodes d'une interface sont abstraites alors qu'une classe abstraite peut avoir à la fois des méthodes non abstraites et des méthodes abstraites.
Une interface ne peut pas avoir de constructeur du tout alors qu'une classe abstraite peut avoir un constructeur mais il ne pourra pas être appelé directement (par exemple en utilisant new), il pourra être appelé par une classe qui en dérive depuis le constructeur (avec super() par exemple) mais cette possibilité dépend aussi de la visibilité du constructeur de la classe abstraite.
Une interface peut quand même contenir des attributs de classe mais je te déconseille de faire ça, c'est pas très propre.