what the purpose multiple method java interface access-specifier

multiple - java interface what is the purpose



Significado de "No se puede reducir la visibilidad del método heredado" con una interfaz (2)

Haga que el método sea público en la clase en la que implementa la interfaz, ya que en la interfaz de forma predeterminada, todos los métodos son públicos y abstractos.

Tengo dos archivos:

public interface PrintService { void print(PrintDetails details); class PrintDetails { private String printTemplate; } public interface Task { String ACTION = "print"; } }

y

public class A implements PrintService { void print(PrintDetails details) { System.out.println("printing: " + details); } String action = PrintService.Task.ACTION; }

Pensé que el código se ve bien, pero estoy obteniendo un error en el segundo archivo para la línea void print(PrintDetails details) { que indica:

No se puede reducir la visibilidad del método heredado de PrintService .

¿Alguien puede explicar lo que esto significa para mí?


En una interfaz Java, cada método es por defecto public :

Cada declaración de método en el cuerpo de una interfaz es implícitamente abstracta, por lo que su cuerpo siempre está representado por un punto y coma, no un bloque.

Cada declaración de método en el cuerpo de una interfaz es implícitamente pública. [..]

En una clase de implementación, no tiene permitido reducir la visibilidad y al no especificar un modificador de acceso:

void print(){..}

está especificando el nivel de acceso predeterminado , que tiene una visibilidad menor que la public .