Я изучаю Java (полный) новичок и получаю следующую ошибку из своего кода. Я потратил некоторое время, пытаясь понять это сам, но не имел большой удачи.
Ошибка: Яркость (int) в FlatScreen не может реализовать Яркость (int) в электронике void Яркость (int newBrightness) {попытка присвоения более слабых прав доступа; публично
public class NewTV {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
FlatScreen fS = new FlatScreen();
fS.Power("On");
fS.Brightness(10);
}
}
interface electronics {
void Power(String newPower);
void Brightness(int newBrightness);
}
class FlatScreen implements electronics {
String Power;
int Brightness;
void Power (String newPower) {
Power = newPower;
System.out.println("Power: " + Power);
}
void Brightness (int newBrightness) {
Brightness = newBrightness;
System.out.println("Brightness: " + newBrightness);
}
}
Методы интерфейса являются общедоступными, даже если ключевое слово public
отсутствует. Классы, реализующие интерфейс, должны публиковать все их реализованные методы, и должно присутствовать public
ключевое слово.
Методы в интерфейсе являются public
по умолчанию. Однако методы в классе называются package-private
по умолчанию. Поскольку это более ограничительный, чем public
модификатор, доступный в интерфейсе, вам не разрешается это делать. Вместо этого вы должны явно использовать модификатор public
доступа при реализации метода.
Это относится ко всем ситуациям, в которых вы расширяете или реализуете базовый класс; все переопределенные методы должны быть как минимум видимыми, как метод, который вы переопределяете. Вы можете сделать метод более широко видимым, но не менее.
Например, почему вы не можете этого сделать, рассмотрите этот код:
electronics e = new FlatScreen();
e.Brightness(5); // the interface says I can call this, but the implementation says I can't!
использование
public void Power (String newPower) {
Power = newPower;
System.out.println("Power: " + Power);
}
public void Brightness (int newBrightness) {
Brightness = newBrightness;
System.out.println("Brightness: " + newBrightness);
}
Методы в interfaces
являются public
по умолчанию. Чтобы override
public
метод, вам необходимо иметь public
модификатор.
Вам нужно узнать о президентстве access modifiers
в Java
. Если вы хотите override
какой-либо метод, вам нужен модификатор с более высоким президентством.