parameter - type interface java
Significato di "Impossibile ridurre la visibilità del metodo ereditato" con un'interfaccia (2)
Ho due file:
public interface PrintService {
void print(PrintDetails details);
class PrintDetails {
private String printTemplate;
}
public interface Task {
String ACTION = "print";
}
}
e
public class A implements PrintService {
void print(PrintDetails details) {
System.out.println("printing: " + details);
}
String action = PrintService.Task.ACTION;
}
Ho pensato che il codice fosse a posto, ma sto ricevendo un errore nel secondo file per la void print(PrintDetails details) {
linee void print(PrintDetails details) {
che afferma:
Impossibile ridurre la visibilità del metodo ereditato da
PrintService
.
Qualcuno può spiegare cosa significa questo per me?
Rendi pubblico il metodo nella classe in cui viene implementato l'interfaccia, perché in un'interfaccia di default ogni metodo è pubblico e astratto.
In un'interfaccia Java ogni metodo è di default public
:
Ogni dichiarazione di metodo nel corpo di un'interfaccia è implicitamente astratta, quindi il suo corpo è sempre rappresentato da un punto e virgola, non da un blocco.
Ogni dichiarazione di metodo nel corpo di un'interfaccia è implicitamente pubblica. [..]
In una classe di implementazione non è consentito ridurre la visibilità e non specificando un modificatore di accesso:
void print(){..}
stai specificando il livello di accesso predefinito , che ha una visibilità inferiore a quella public
.