# Variable in Interface definieren



## Guest (10. Aug 2006)

Hallo,
Ich möchte eine Variable in einem Interface definieren und sie später in den Klassen definieren.

Wenn ich die Variable mit


```
String variable;
```

im Interface definiere, tritt ein Fehler auf. Wenn ich sie im Interface definiere, ist sie für alle Klassen gleich.

Weiß vielleicht jemand wie das geht?


----------



## Gast (10. Aug 2006)

Wenn ich sie im Interface initialisiere, ist sie für alle Klassen gleich. 
Sorry für den Fehler


----------



## Leroy42 (10. Aug 2006)

Das geht nicht!

In Interfaces können nur Methoden oder Konstanten definiert werden.


> Ich möchte eine Variable in einem Interface *definieren* und sie später in den Klassen *definieren*.


Was soll denn der Unterschied zwischen _definieren_ und _definieren_ sein?  :shock: 

Da du die Variable ja ohnehin in jeder, dein Interface implementierenden, Klasse definieren
willst, schreib' in dein Interface einfach eine setter- und eine getter-Methode, die die
implementierenden Klassen dann zusätzlich zur Variable selbst bereitstellen.

Obwohl ich mich Frage, was das ganze überhaupt soll.  ???:L 
Kannst du nicht gleiche eine abstrakte Klasse nehmen? Da kannst du Variablen definieren,
soviel du lustig bist.


----------



## Guest (11. Aug 2006)

> Obwohl ich mich Frage, was das ganze überhaupt soll.



Ich möchte ein neues Objekt einer Klasse die das Interface implementiert einer Methode übergeben:


```
public Result loadsmth(){
        return new Result( this.exec(new hallo()) );
}
```

Jetzt wird ein Objekt der Klasse hallo erstellt. Das Objekt wird an folgende Funktion übergeben:


```
private Result exec(Definition dao){
    //irgenein Code
    String Klassenname = dao.name;
}
```

und im Interface soll die Variable definiert sein, damit man auf sie von der Methode aus zugreifen kann. Ist sie nicht im Interface initialisiert, sondern nur in der Klasse die das Interface implementiert selbst, wird sie in eclipse rot unterwellt.


----------



## AlArenal (11. Aug 2006)

Ich versteh nur Bahnhof, hatte allerdings auch noch keinen Kaffee.

Erklär doch mal in Ruhe wozu das gut sein soll, anstatt uns nicht funktionierenden Code erklären zu wollen. Vielleicht fällt uns ne ganze andere Lösung für deine Situation ein, als gleich bei Sun die Erweiterung der Sprach-Features zu fordern


----------



## byte (11. Aug 2006)

Leroy42 hat gesagt.:
			
		

> Obwohl ich mich Frage, was das ganze überhaupt soll.  ???:L
> Kannst du nicht gleiche eine abstrakte Klasse nehmen? Da kannst du Variablen definieren,
> soviel du lustig bist.



Man kann nun mal nicht jedes mal, wenn man ein Interface benutzen will, auch stattdessen eine abstrakte Klasse benutzen. Ich hatte z.B. erst letztens den Anwendungsfall, dass ich ein Interface definiert habe, um gewisse Komponenten positionierbar zu machen. Statt die Koordinaten der Positionierung im Interface als Felder angeben zu können, musste ich mir jedoch auch damit behelfen, bloß die Getter und Setter bereitzustellen.


----------



## Leroy42 (11. Aug 2006)

@byto

Da hast du natürlich Recht. Deshalb habe ich Gast im gleichen Post ja auch
vorgeschlagen eine getter-Methode (evtl. auch setter) in sein Interface mit
aufzunehmen.

Der Hinweis auf Nutzung einer abstrakten Klasse kam nur deshalb, weil
uns nicht klar ist, worauf er überhaupt hinaus will.


----------

