我正在学习Java(完全)初学者,并且从我的代码中得到以下错误。我花了一些时间试图弄明白自己,但没有太多运气。
错误:FlatScreen中的亮度(int)无法在电子设备中实现亮度(int) void Brightness(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);
}
}
答案 0 :(得分:2)
即使public
关键字不存在,接口方法也都是公开的。实现接口的类必须公开所有已实现的方法,并且必须存在public
关键字。
答案 1 :(得分:1)
默认情况下,界面中的方法为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!
答案 2 :(得分:0)
使用
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
某种方法,你需要具有更高总统职位的修饰语。