Java-试图分配较弱的类权限

时间:2014-07-16 05:48:25

标签: java compiler-errors

我正在学习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);
    }
}

3 个答案:

答案 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 modifiersJava的总统职位。如果你想override某种方法,你需要具有更高总统职位的修饰语。