Les méthodes d'une interface ne peuvent pas être protected? - Java - Programmation
Marsh Posté le 22-04-2004 à 10:49:50
ou est l'intéret d'une méthode privée pour une interface ?
Une interface, c'est un contrat que tu passe avec les objets utilisateurs, donc tu ne peux que spécifier ce que tu leur montre.
Marsh Posté le 22-04-2004 à 10:55:03
ratai, elle sont publiques s'il n'y a pas de mot-clef "public" :
http://java.sun.com/docs/books/jls [...] html#78651
Citation : Every method declaration in the body of an interface is implicitly public. |
Marsh Posté le 22-04-2004 à 10:57:04
Par contre, une interface elle-même peut être publique, privée ou package-visible. Pour restreindre l'accès à certaines méthodes, tu fais une interface public, et tu lui fais une sous-interface avec la visibilité que tu veux et les méthodes à protéger.
Marsh Posté le 22-04-2004 à 11:00:45
El_gringo a écrit : Je risque de m'en prendre plein la tête. Tant pis. |
toi tu n'as pas compris ce que c'était une méthode privée visiblement
Pour countourne ton problème
Interface avec les méthode publiques -> Abstract class avec des méthodes protected si tu en as besoins -> tes implémentations
Marsh Posté le 22-04-2004 à 11:08:52
lorill a écrit : ou est l'intéret d'une méthode privée pour une interface ? |
L'intéret dans mon cas : développement d'une API. Je veux forcer à implémenter des méthodes, sans pour autant que ces méthodes soit "exposées" aux autres classes. tu vois l'intéret ?
Marsh Posté le 22-04-2004 à 11:09:50
nraynaud a écrit : ratai, elle sont publiques s'il n'y a pas de mot-clef "public" :
|
Tient !? étrange. Dans les sources du JDK, 1 fois sur 2 il y a ou il y a pas le mot clé "public". J'aurais pensé que ça avait une intéret quand même.
Marsh Posté le 22-04-2004 à 11:11:46
DarkLord a écrit : toi tu n'as pas compris ce que c'était une méthode privée visiblement |
Pourquoi tu dis ça !???
Ha oui, private, c'est ridicule pour une interface. Mais pour protected, je maintient.
Marsh Posté le 22-04-2004 à 11:12:00
El_gringo a écrit : Tient !? étrange. Dans les sources du JDK, 1 fois sur 2 il y a ou il y a pas le mot clé "public". J'aurais pensé que ça avait une intéret quand même. |
à part rendre le code source confus, je ne vois aucun autre intérêt
Marsh Posté le 22-04-2004 à 11:13:11
El_gringo a écrit : L'intéret dans mon cas : développement d'une API. Je veux forcer à implémenter des méthodes, sans pour autant que ces méthodes soit "exposées" aux autres classes. tu vois l'intéret ? |
oui, mais ce n'est plus une interface pour les autres. Soit tu fais comme l'a dit nraynaud, soit tu passes par une classe abstraite (l'implémentation n'a rien a faire dans une interface)
Marsh Posté le 22-04-2004 à 11:19:06
DarkLord a écrit : à part rendre le code source confus, je ne vois aucun autre intérêt |
pareil, laisser 2 mots clefs inutiles dans la grammaire, je trouve ça con.
Marsh Posté le 22-04-2004 à 11:21:05
lorill a écrit : oui, mais ce n'est plus une interface pour les autres. Soit tu fais comme l'a dit nraynaud, soit tu passes par une classe abstraite (l'implémentation n'a rien a faire dans une interface) |
Non, ça devient une interface rien que pour la classe, en effet.
Je n'comprend pas ta remarque entre parenthèses!
Marsh Posté le 22-04-2004 à 11:22:24
nraynaud a écrit : pareil, laisser 2 mots clefs inutiles dans la grammaire, je trouve ça con. |
Ben, maintenant qu'il existe depuis le début du Java, ils peuvent plus le supprimer. C'est l'utiliser une fois sur 2 ce "public" qui est con.
Marsh Posté le 22-04-2004 à 11:24:11
nraynaud a écrit : Par contre, une interface elle-même peut être publique, privée ou package-visible. Pour restreindre l'accès à certaines méthodes, tu fais une interface public, et tu lui fais une sous-interface avec la visibilité que tu veux et les méthodes à protéger. |
Je vais plutôt faire une classe abstraite. Mais j'aimerai quand même comprendre ce que tu veux dire (j'ai pas compris).
Marsh Posté le 22-04-2004 à 12:23:02
El_gringo a écrit : Non, ça devient une interface rien que pour la classe, en effet. |
exemple : un lecteur audio
Code :
|
la on ne dit pas comment faire aux implémenteurs de l'interface, juste ce qu'il faut faire.
Code :
|
la tu impose l'utilisation d'AudioFrames pour la lecture. tu dis donc comment faire pour lire AudioFile.
Marsh Posté le 22-04-2004 à 13:11:06
DarkLord a écrit : à part rendre le code source confus, je ne vois aucun autre intérêt |
m'enfin !!!
sans le mot clé public la methode est PACKAGE-PROTECTED !!
(ha, ptet pas pour les interfaces, c'est de ça qu'on parle? )
Marsh Posté le 22-04-2004 à 13:32:33
the real moins moins a écrit : m'enfin !!! |
Marsh Posté le 22-04-2004 à 13:46:22
the real moins moins a écrit : m'enfin !!! |
...c'était vraiment très interressant !
Marsh Posté le 22-04-2004 à 13:47:25
the real moins moins a écrit : m'enfin !!! |
va lire l'extrait du JLS que j'ai posté plus haut.
Marsh Posté le 22-04-2004 à 14:01:36
Reply
Marsh Posté le 22-04-2004 à 10:46:02
Je risque de m'en prendre plein la tête. Tant pis.
Les méthodes d'une interface ne peuvent donc être que public, ou "portée par défaut" ? J'suis à peu près sur là. Je pourrais avoir confirmation ?
Message édité par El_gringo le 22-04-2004 à 11:12:23