besoin d'explication sur l'héritage

besoin d'explication sur l'héritage - Java - Programmation

Marsh Posté le 11-12-2002 à 01:12:30    

Salut!
 
1/ Je voudrais savoir si "public interface" sert bien à définir une classe abstraite.
 
Avant je me contentais d'écrire une classe normale, puis ses dérivées, mais bon je pense que ct pas terrible avec un peu de recul.
 
De plus la définition d'une classe abstraite (si j'ai bien compris) avec "public interface" me fait vraiment penser au .h du C++. Y'a-t-il un lien de parenté?
 
2/ Je voudrais aussi savoir si quelqu'un peut m'expliquer clairement la différence entre "implements" et "extends".
 
Thx et ++ les dév!


---------------
[:roco] Un chtit café et hop ça repart !
Reply

Marsh Posté le 11-12-2002 à 01:12:30   

Reply

Marsh Posté le 11-12-2002 à 10:12:42    

1/ Non public interface te sert à déclarer une interface. Si tu veux déclarer une classe abstraite c'est "public abstract class" que tu dois utiliser.
 
pour C++ je ne m'avance pas plus bien que je dirai à priori oui (mais pour interface pas classe abstraite).
 
 
2/ Une interface c'est un contrat. Si tu veux implémenter une interface (implements) tu dois implémenter toutes les méthodes définies dans l'interface de sorte que tu peux passer la définition de l'interface dans tes signatures et filer au runtime un des implémentations. Une classe abstraite est une classe qui définit un certain nombre de méthodes mais que tu ne peux pas instancier. Typiquement tu peux avoir le comportement suivante:
 
Interface Server
Classe abstraite AbstractServer (implements Server)
Classes XServer, YServer (extends AbstractServer)
 
Dans AbstractServer tu définis tout ce qui va etre commun aux deux type de serveur et tu le fais abstract pour ne pas qu'on puisse l'instancier (puisque tu dois encore spécialier). XServer et YServer vont implémenter les autres méthodes pour le comportement X et Y
 
 
Donc implements c'est pour une interface et tu dois implémenter toutes les méthodes. extends c'est pour une classe et tu peux spécialiser (ajouter des méthodes, redéfinir une méthode existante).
 
est ce clair?


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 12-12-2002 à 13:03:56    

Thx Dark!
 
++ (pense à me rappeller sur MSN)


---------------
[:roco] Un chtit café et hop ça repart !
Reply

Marsh Posté le 12-12-2002 à 13:21:09    

En C++, le concept d'interface tel qu'on l'entend en Java n'existe pas. Mais on peut le simuler.
Pour simplifier, une interface, c'est une classe abstraite qui n'a aucun attribut et dont toutes les méthodes sont abstraites (on dit "virtuelles pures", en C++).

Reply

Marsh Posté le 12-12-2002 à 13:39:23    

Roco a écrit :

++ (pense à me rappeller sur MSN)


 
 :??:


---------------
Just because you feel good does not make you right
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed