SubclassOne
ClassOne
erweitert und implementiert InterfaceOne
, die beide eine void doSomething(){}
Methode hat. der Compiler Fehlermeldung anzeigen, wardoSomething() in ClassOne nicht doSomething() in InterfaceOne, Versuch implementieren schwächeren Zugriffsrechte zuweisen, war öffentlich
doSomething() in ClassOne kann jedoch nicht doSomething() in InterfaceOne, Versuch implementieren schwächeren Zugriffsrechte zuweisen, öffentliche
Könnte mir bitte jemand sagen Warum zeigt der Compiler diese bestimmte Nachricht an? Was ist der Grund dafür?
public class ClassOne {
void doSomething(){
System.out.println("do something from InterfaceMethod class");
}
}
public interface InterfaceOne {
default void doSomething(){
System.out.println("do something from InterfaceOne");
}
}
public class SubclassOne extends ClassOne implements InterfaceOne{
public static void main(String[] args) {
}
}
Methoden in Schnittstellen sind implizit' public'. – Savior
Ich denke, die Frage ist, dass classone Interfaceone nicht implementiert, aber immer noch einen Fehler bekommen. Es ist kein Duplikat davon –
@TamasHegedus Der Fehler ist nicht in 'ClassOne'. Die Nachricht bezieht sich einfach auf 'ClassOne', weil 'SubclassOne' versucht, sie zu überschreiben. Der Fehler liegt in 'SubclassOne', um' doSomething' als Paket privat zu erben und es als 'public' für' InterfaceOne' zu implementieren. Dies ist ein exaktes Duplikat. – Savior