Question sur la POO : empêcher l'héritage d'une fonction public ?
6 messages
• Page 1 sur 1
-

dorian53 - WRInaute passionné

- Messages: 2217
- Inscription: 10 Avr 2005
Question sur la POO : empêcher l'héritage d'une fonction pub
Bonjour,
Est-il possible d'empêcher l'héritage d'une fonction à une classe fille... tout en gardant l'accès public par l'instanciation de la classe mère.
Exemple.
Je veux pouvoir accéder $oA->test();
Mais pas à $oB->test();
En gros j'aurais besoin d'un mot clé tel que inherited.
Est-ce que cette notion existe dans la programmation objet (en PHP et ailleurs) ?
Est-ce qu'il y a des solutions pour simuler cette notion ?
Merci.
Est-il possible d'empêcher l'héritage d'une fonction à une classe fille... tout en gardant l'accès public par l'instanciation de la classe mère.
Exemple.
- Code: Tout sélectionner
class A {
public function test() {
}
}
class B extends A {
}
Je veux pouvoir accéder $oA->test();
Mais pas à $oB->test();
En gros j'aurais besoin d'un mot clé tel que inherited.
Est-ce que cette notion existe dans la programmation objet (en PHP et ailleurs) ?
Est-ce qu'il y a des solutions pour simuler cette notion ?
Merci.
-

Bool - WRInaute passionné

- Messages: 1290
- Inscription: 26 Fév 2004
Hello,
en PHP il me semble que c'est le mot clé "final" qui sert à ça.
Edit : quoi que non, elle empêche la surcharge, pas l'appel.
En même temps si tu veux vraiment bloquer l'appel je pense que tu peux surcharger par une méthode private/protected. Mais... es tu sûr que ton héritage soit "justifié" en fait ?
en PHP il me semble que c'est le mot clé "final" qui sert à ça.
Edit : quoi que non, elle empêche la surcharge, pas l'appel.
En même temps si tu veux vraiment bloquer l'appel je pense que tu peux surcharger par une méthode private/protected. Mais... es tu sûr que ton héritage soit "justifié" en fait ?
-

dorian53 - WRInaute passionné

- Messages: 2217
- Inscription: 10 Avr 2005
Bool a écrit:en PHP il me semble que c'est le mot clé "final" qui sert à ça.
Edit : quoi que non, elle empêche la surcharge, pas l'appel.
J'ai eu la même réflexion
Bool a écrit:En même temps si tu veux vraiment bloquer l'appel je pense que tu peux surcharger par une méthode private/protected.
Intéressant je vais tester ça après avoir mangé rien que par curiosité même si c'est contraignant.
Bool a écrit:Mais... es tu sûr que ton héritage soit "justifié" en fait ?
A première vue oui.
Merci, je posterai le résultat du private même si je ne pense pas adopter cette solution.
- benjamin-reseauit-com
- Nouveau WRInaute

- Messages: 39
- Inscription: 8 Jan 2009
En java il y a effectivement final mais qui n'empêche pas l'utilisation.
Cependant il y a les interface pour faire ça :
si tu as
Et que tu n'utilises que des interfaces, tu auras ce que tu veux. Je ne critiquerai pas l'approche. C'est sans doute un problème de conception derrière...
pense aussi à la composition sans rendra peut être ton problème plus simple
[/quote][/code]
Cependant il y a les interface pour faire ça :
si tu as
- Code: Tout sélectionner
public class A implements AInterface {
public void MethodeVisibleDansA() {
}
public void MethodeToujoursVisible() {
}
}
public class B implements BInterface {
}
public interface CommonInterface {
public void MethodeToujoursVisible();
}
public interface AInterface extends CommonInterface {
public void MethodeVisibleDansA();
}
public interface BInterface extends CommonInterface {
}
Et que tu n'utilises que des interfaces, tu auras ce que tu veux. Je ne critiquerai pas l'approche. C'est sans doute un problème de conception derrière...
pense aussi à la composition sans rendra peut être ton problème plus simple
[/quote][/code]
6 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- empecher l'affichage d'adsense en fonction de l'url ?
- POO ou pas POO ?
- Redirection IP Public FR vers IP Public BE pour référencement pays local
- Héritage de l'hébergeur
- [.htaccess] Héritage, ça boucle
- urlrewritting+bloquer heritage
- [Europeana] Connecting Cultural Heritage
- Question php : la fonction include
- question php - fonction sort()
- [PHP] question sur fonction rand
- Google AdSense Calendar - 02-06-2006
- Référencement de sites multilingues - 22-04-2004
- Participez au projet 3x3 ! - 19-07-2004
- Du nouveau du côté des laboratoires de Google : Google Labs - 20-05-2002
- MyMaps : des cartes personnalisées avec Google Maps - 05-04-2007
- Google Labs, les labos de Google se montrent au public - 13-11-2002
Consultez la description détaillée des produits ou services de Google suivants : Google Answers, Google Book Search, Google Related Links
Qui est en ligne
Utilisateurs parcourant ce forum: enams90 et 0 invités

