Ответ 1
Методы, объявленные внутри интерфейса, неявно public
. И все переменные, объявленные в интерфейсе, неявно public static final
(константы).
public String getGait() {
return " mph, lope";
}
Когда я скомпилирую этот код:
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";
}
}
Я получаю следующую ошибку:
Camel.java:13: error: getGait() in Camel cannot implement getGait() in Rideable
String getGait() {
^
attempting to assign weaker access privileges; was public
1 error
Как объявлен метод getGait в рассматриваемом интерфейсе?
Методы, объявленные внутри интерфейса, неявно public
. И все переменные, объявленные в интерфейсе, неявно public static final
(константы).
public String getGait() {
return " mph, lope";
}
Все методы в interface
неявно public
, независимо от того, объявляете ли вы это явно или нет. Дополнительную информацию см. В разделе Интерфейсы Java Tutorials.
Все методы в interface
неявно public
. Но внутри класса, если публикация не упоминается явно, она имеет только видимость пакета. Благодаря переопределению вы можете увеличить видимость. Вы не можете уменьшить видимость. Поэтому измените реализацию getGait()
в классе верблюда как
public String getGait() {
return " mph, lope";
}