Frage bzgl. Interfaces

DaSt

Bekanntes Mitglied
Hallo,

ich soll ein "Vogelprogramm" zur Verwaltung von Vögeln schreiben.
Dazu gibt es eine Interface(Klasse?) "HasName", die ich wie folgt erstellt habe:

Java:
public interface HasName {
	
	String sayHello="";
	
	public interface getName{
		
	}

}

und u.a. die Klasse Amsel, die wie folgt aussieht:

Java:
public class Amsel extends Vogel implements KannFliegen, HasName {
	
	
	
	public void singen(){
		
		System.out.println("Amsel singt");
	}
	
	public void fly(){
		
		System.out.println("Ich kann fliegen(Amsel)");
	}

}

in der Klasse Amsel habe ich die Methode getName noch nicht implementiert, aber es wird kein Fehler angezeigt und es läuft auch ganz normal.(Die Methode fly() ist aus dem Interface KannFliegen)

Eigentlich dürfte es doch erst laufen, wenn ich die Methode getName und den String "sayHello" implementiert habe oder?

danke
 
Zuletzt bearbeitet:
Mich wundert, dass der Code überhaupt kompiliert. Das interface ist komplett falsch deklariert.

Interfaces beinhalten keine Variablen, nur Methoden.
Von den Methoden wiederum schreibt man nur den Kopf / die Signatur, also z.B. "String getName()";

Interface in nem Interface zu deklarieren kommt mit ehrlich gesagt auch ziemlich strange vor.
 
Zuletzt bearbeitet:
.

Interfaces beinhalten keine Variablen, nur Methoden.

Die Aufgabenstellung:

"Aufgabe 7.1.1 (Interface)

Erstellen Sie ein Interface „HasName“ mit dem Attribut „String sayHello“ und einer Methode „String getName()“.
"
der String sayHello ist doch eine Variable oder?
 
Zuletzt bearbeitet:
Ein Interface kann sehr wohl Variablen enthalten. Diese sind aber per Default "static" und "final" - also eigentlich Konstanten.

Kann es sein, dass die Klasse "Vogel" bereits die Methode "getName" implementiert ?
 
Das ist eine blöd formulierte Aufgabenstellung. Interfaces dürfen keine Variablen beinhalten, jedoch Konstanten (static final). Steht das nicht dabei wird das intern ergänzt, was auch erklärt, warum es bei dir funktioniert. Ist aber eben wie gesagt dann eine Konstante und keine Variable.

Edit: zu spät
 
Zuletzt bearbeitet:
Der Code ist zwar quark, aber compile-clean

Du musst ein Interface HasName definieren (public interface HasName {}) und darin eine Methode (public void getName()😉.
 

Neue Themen


Zurück
Oben