Quand je compile ce code:
interface Rideable {
String getGait();
}
public class Camel implements Rideable {
int x = 2;
public static void main(String[] args) {
new Camel().go(8);
}
void go(int speed) {
System.out.println((++speed * x++)
+ this.getGait());
}
String getGait() {
return " mph, lope";
}
}
Je reçois l'erreur suivante:
Camel.Java:13: error: getGait() in Camel cannot implement getGait() in Rideable
String getGait() {
^
attempting to assign weaker access privileges; was public
1 error
Comment la méthode getGait est-elle déclarée dans l'interface considérée comme publique?
Les méthodes déclarées à l'intérieur de l'interface sont implicitement public
. Et toutes les variables déclarées dans l'interface sont implicitement public static final
(constantes).
public String getGait() {
return " mph, lope";
}
Toutes les méthodes d'une interface
sont implicitement public
, que vous le déclariez explicitement ou non. Pour plus d'informations, reportez-vous à la section Interfaces de didacticiels Java .
Toutes les méthodes dans interface
sont implicitement public
. Mais à l'intérieur d'une classe, si public n'est pas mentionné explicitement, il n'a qu'une visibilité sur les packages. En passant outre, vous ne pouvez qu’augmenter la visibilité. Vous ne pouvez pas diminuer la visibilité. Donc, modifiez l’implémentation de getGait()
dans la classe chameau comme
public String getGait() {
return " mph, lope";
}
Les champs d'interface sont publics, statiques et finaux par défaut, et les méthodes sont publiques et abstraites.
Ainsi, lorsque vous implémentez une interface, l’appel de la fonction doit être public La fonction doit être
public String getGait() {
return " mph, lope";
}