2016-04-19 9 views
-2
interface Rideable { 

    String getGait(); 

} 

public class Camel implements Rideable { 

    String getGait() { return " mph, lope"; } 

} 

Warum schlägt die Kompilierung fehl? Ich weiß wirklich nicht warum der Kompilierfehler?Warum Kompilierung fehlschlägt? [Java]

+0

Was sagen Ihnen die Kompilierungsfehler? – Reimeus

+0

Haben Sie den Fehler gelesen? – SLaks

+0

Schnittstellenmethoden sind standardmäßig öffentlich. Sie versuchen, die Methode mit einer privaten Paketmethode zu implementieren (die restriktiver ist). Für einen Vergleich zwischen public und package private siehe [diese Grafik] (http://stackoverflow.com/a/33627846/276052). – aioobe

Antwort

2

Standardmäßig ist der Modifikator für die Methode der Schnittstelle public. Also, wenn Sie es implementieren. Es muss öffentlich sein. In der Öffentlichkeit Ihre getGait Methode lösen sollte es

1

Methoden in der Schnittstelle sind standardmäßig öffentlichen und abstrakte und Daten Mitglied sind standardmäßig öffentliche, statische und letzte als Zugang Label. In der Unterklassenimplementierung haben Sie keinen Modifizierer erwähnt. So wird es Standard Zugriff haben. Wenn Sie die Implementierung angeben, können Sie das Zugriffslabel nicht einschränken (weniger angeben). Daher müssen Sie public als Zugriffsmodifikator bereitstellen, während Sie die Methoden der Schnittstelle implementieren.