Hériter de manière protected - Java - Programmation
Marsh Posté le 24-10-2002 à 17:02:36
bin si tu étends une classe tu l'étends tu ne modifies pas le père ...
donc si un attribut est public dans la classe mère il sera automatiquement public dans la classe fille
Marsh Posté le 24-10-2002 à 17:05:52
DarkLord a écrit a écrit : bin si tu étends une classe tu l'étends tu ne modifies pas le père ... donc si un attribut est public dans la classe mère il sera automatiquement public dans la classe fille |
...pas en C++
ça suit peut être pas les normes Objet, mais c bien pratique desfois.
Remarque, là ,j'me débrouille autrement, finalement ça fait un truc plus propre.
Merci.
Marsh Posté le 24-10-2002 à 17:08:29
en fait, tu voudrais que l'utilisateur de ta classe archive n'est pas accès aux membres de la classes mère, ce qui par définition ne représente aucun intérêt de faire un héritage dont le but est de justement permettre à l'utilisateur d'une classe dérivée d'utilisé également les membres et fonctions de la classe mère
si tu y tiens alors, autant laisser tomber l'héritage et avoir un attribut File dans ta classe archive et écrire des méthodes dans archive qui se contente d'appeler des méthodes de File.
Marsh Posté le 24-10-2002 à 17:12:39
polyacetal a écrit a écrit : en fait, tu voudrais que l'utilisateur de ta classe archive n'est pas accès aux membres de la classes mère, ce qui par définition ne représente aucun intérêt de faire un héritage dont le but est de justement permettre à l'utilisateur d'une classe dérivée d'utilisé également les membres et fonctions de la classe mère si tu y tiens alors, autant laisser tomber l'héritage et avoir un attribut File dans ta classe archive et écrire des méthodes dans archive qui se contente d'appeler des méthodes de File. |
...ça s'défend
De toute façon je fais un truc complètement différent du coup.
Marsh Posté le 24-10-2002 à 17:20:30
El_Gringo a écrit a écrit : ...pas en C++ ça suit peut être pas les normes Objet, mais c bien pratique desfois. Remarque, là ,j'me débrouille autrement, finalement ça fait un truc plus propre. Merci. |
arf arrête de nous rabattre avec le C++. Pq tu ne fais pas du C++ si tu n'arrêtes pas d'en parler hein
Marsh Posté le 24-10-2002 à 17:31:55
DarkLord a écrit a écrit : arf arrête de nous rabattre avec le C++. Pq tu ne fais pas du C++ si tu n'arrêtes pas d'en parler hein |
Ha, ce que j'aime cette bonne humeur pérpétuelle, ta tolérance, ton sang froid... un vraie bouffée d'air pur dans ce monde sans tolérance ! Merci Dark
--> Plus sérieusement, j'ai fait 9 mois de C++, c normal que j'ai tendance à vouloir faire en Java certains trucs que je faisais en C++, tu crois pas ?
Cela dit, je préfère programmer en Java !
Marsh Posté le 24-10-2002 à 19:07:46
en fait tu peux élargir les droits d'accès par héritage (rendre public ou protected une classe privée, etc ...) mais pas l'inverse car sinon elle ne remplirait plus le contrat fixé par l'interface de la classe héritant.
Ce serait contraire à la notion d'héritage.
D'ailleur ca m'étonne que le C++ permette ca. T'es sur de toi ?
Dans ton cas, ce n'est pas de l'héritage que tu dois faire mais de l'agrégation.
Quand on fait de l'héritage on étend les possibilitées on ne les restreint pas.
Marsh Posté le 24-10-2002 à 19:40:06
El_Gringo a écrit a écrit : Ha, ce que j'aime cette bonne humeur pérpétuelle, ta tolérance, ton sang froid... un vraie bouffée d'air pur dans ce monde sans tolérance ! Merci Dark --> Plus sérieusement, j'ai fait 9 mois de C++, c normal que j'ai tendance à vouloir faire en Java certains trucs que je faisais en C++, tu crois pas ? Cela dit, je préfère programmer en Java ! |
c'est marrant je pense que je faire la même chose (en inverse) quand je me remmetrai au C++
Marsh Posté le 25-10-2002 à 09:35:47
benou a écrit a écrit : en fait tu peux élargir les droits d'accès par héritage (rendre public ou protected une classe privée, etc ...) mais pas l'inverse car sinon elle ne remplirait plus le contrat fixé par l'interface de la classe héritant. Ce serait contraire à la notion d'héritage. D'ailleur ca m'étonne que le C++ permette ca. T'es sur de toi ? Dans ton cas, ce n'est pas de l'héritage que tu dois faire mais de l'agrégation. Quand on fait de l'héritage on étend les possibilitées on ne les restreint pas. |
Pas forcément.
La classe Properties, par exemple.
Bon, d'un côté, ça étend les possibilté de la hashtable (ça lui permet de s'écrire dans un fichier et d'en lire un), ms d'un autre côté, ça restreind les possibilités : il est très fortement déconseillé d'utiliser la méthode put (héritée de Hashtable), auquel cas on risquerai de mettre autre chose qu'une String ds cette Hashtable...
Marsh Posté le 25-10-2002 à 09:49:47
El_Gringo a écrit a écrit : Pas forcément. La classe Properties, par exemple. Bon, d'un côté, ça étend les possibilté de la hashtable (ça lui permet de s'écrire dans un fichier et d'en lire un), ms d'un autre côté, ça restreind les possibilités : il est très fortement déconseillé d'utiliser la méthode put (héritée de Hashtable), auquel cas on risquerai de mettre autre chose qu'une String ds cette Hashtable... |
je vois pas le problème : rien ne t'empêche d'utiliser les méthodes de Hashtable avec un objet Properties...
c'est pas parce que c'est déconseillé que tu ne peux pas le faire.
La classe Properties est un bonne exemple de classe qui ne devrait pas utiliser l'héritage mais l'agrégation si ses concepteurs ne souhaitaient pas que l'on puisse utiliser les méthodes de la HashTable
Marsh Posté le 25-10-2002 à 10:53:29
benou a écrit a écrit : je vois pas le problème : rien ne t'empêche d'utiliser les méthodes de Hashtable avec un objet Properties... c'est pas parce que c'est déconseillé que tu ne peux pas le faire. La classe Properties est un bonne exemple de classe qui ne devrait pas utiliser l'héritage mais l'agrégation si ses concepteurs ne souhaitaient pas que l'on puisse utiliser les méthodes de la HashTable |
Les ingénieurs de chez Sun seraient donc des incompétents ?
Marsh Posté le 25-10-2002 à 10:54:22
El_Gringo a écrit a écrit : Les ingénieurs de chez Sun seraient donc des incompétents ? |
ca c'est vraiment très drôle
Marsh Posté le 25-10-2002 à 14:21:03
El_Gringo a écrit a écrit : Les ingénieurs de chez Sun seraient donc des incompétents ? |
ils ont privilégié le pratique à la rigueur. C'est un choix.
Un peu comme classe Stack qui hérite de Vector : c'est complétement illogique et contraire mais peut être pratique dans certains cas...
Marsh Posté le 24-10-2002 à 17:00:44
Je voudrais créer une classe étendant File de manière protected, c'est à dire, je voudrais que les membres et attributs public de File ne soient accessibles que de manière protected dans ma classe Archive (qui étend File)
G essayé ça :
class Archive extends protected File
ça passe pas...
C'est possible en C++
Et en Java c pas possible ?