Interface in Java -- HILFE

Aufrufe: 752     Aktiv: 09.03.2023 um 23:39

0

Hallo zusammen,

Warum gibt es einen Kompilerfehler, attempting to assign weaker access privileges; was public und non-static method draw() cannot be referenced from a static context?

Darf man in der Linie 6 die Deklaration der Methode draw in der Klasse Ball löschen? Darf man in der Zeile 11 durch Drawable ball = new Ball() ersetzen?

code

Diese Frage melden
gefragt

Student, Punkte: 66

 
Kommentar schreiben
1 Antwort
1
  1. Du versuchst eine Methode (draw) statisch aufzurufen (Ball.draw()). Was natürlich nur bei einer statischen Klasse und Methode ginge (und wovon ich in fast 100% der Fälle abraten würde, aber anderes Thema). Da du ja das Objekt bereits gebaut hast (Zeile 11), kannst du die Methode mit ball.draw(); aufrufen. Das wird aber nicht klappen, weil du
  2. Die Methode mit dem Modifizierer protected versehen hast. Das heißt, das erbene Klassen die Methode verwenden können, externe jedoch nicht. Da Question nicht von Ball erbt, wird der Zugriff verweigert. Lösung: Mach die Methode public:

    public void draw(String color) {};

Diese Antwort melden
geantwortet

 

Kommentar schreiben