JAVA classe abstraite

Fermé
lol88 - 3 juil. 2011 à 19:32
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 3 juil. 2011 à 21:58
Bonjour,

j'ai un grand probleme, je travaille actuellement avec la framework snmp6; j'ai constater qu'il y a une declaration de classe celle ci : public abstract class Pdu extends Observable
mais elle ne contient aucune methode abstraite, j'ai rencontré ce probleme car j'ai trouvré des objets de type Pdu mais l'orsque je fait appele à l'une de ces methodes c'est la methode de la classe fille qui s'execute !!!

j'ai pas compris cette implementation
A voir également:

4 réponses

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
3 juil. 2011 à 19:41
Une classe abstraite n'est pas obligée de contenir des méthodes abstraites...
Cependant, regarde si Observable dont elle hérite n'aurait pas elle des méthodes abstraites.

Remarque : il est tout à fait normal que ce soit la méthode de la classe fille qui s'exécute puisqu'elle est plus spécifique, sinon ça ne servirait à rien de surcharger les méthodes !

Si tu veux une aide concrète, donne nous un lien vers la Javadoc de ta bibliothèque, et le code qui pose problème...
0
merci pour votre reponse voici le lien http://www.uclp.ca/api/uclp1.5/es/i2cat/uclp/scs/protocols/snmp/westhawk/stack/Pdu.html

donc si elle n'implemente pas de methode abstraite c'est pas une classe abstraite !!
sinon a quoi ç a sert le mot clé abstract et comment on n'a pu l'instancier, car je voudrais une instance de la classe fille pour pouvoir acceder à ses methode mais je me retrouve avec la classe mere...

Rq: Observable c'est le design pattern
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
3 juil. 2011 à 20:23
Comme je l'ai dit, une classe abstraite n'a pas forcément de méthode abstraite.
Cela peut arriver lorsque l'on veut interdire l'instanciation de la classe.

Cependant ici, il y a bien des méthodes abstraites :
protected abstract void new_value(int n, varbind res)
protected abstract void tell_them()
0
alors comment on a pu l'instancier ?
voici un bout de code :

private Pdu pdu;
public DecodedPduEvent(Object source, Pdu p, int prt)
{
super(source);
pdu = p;
hostPort = prt;
}
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
3 juil. 2011 à 21:03
L'instanciation c'est faire Pdu p = new Pdu(con); ce qui n'est pas possible.
Mais ça ne t'empêche pas d'utiliser la classe Pdu quand même :
Pdu p = new DiscoveryPdu(cntxt);
DecodedPduEvent(source,p,prt)
0
aaa d'accord merci.
merci pour vos reponse ça m'aide beaucoup
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
Modifié par KX le 3/07/2011 à 21:58
Remarque : dans le code j'ai utilisé DiscoveryPdu mais c'est juste un exemple, tu peux utiliser n'importe quelle sous-classe non-abstraite de Pdu, celles de la librairie ou la tienne selon tes besoins.
0