JAVA classe abstraite
lol88
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
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
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
4 réponses
-
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... -
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 -
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() -
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;
}