# konstante/variable Attribute?



## foerster7891 (9. Jan 2013)

Hi,
ich soll die Frage beantworten ob in Java in abstrakten Klassen / konkreten Klassen / Schnittstellenklassen - konstante/variable Attribute enthalten seien dürfen.

Sind konstante/variable Attribute einfach Variablen in der Klasse -> also entweder final oder eben nicht final?

oder was soll das sein?

edit: Achso noch ergänzend eine Frage - Schnittstellenklassen haben keine Konstruktoren oder? Wäre ja schwachsinn da sie eh keine Attribute enthalten und alle Methoden abstrakt sind - dies würde wieder bedeuten, dass der Konstruktor auch abstrakt sein müsste und dass wäre ja gesteigerter Schwachsinn.


----------



## Timothy Truckle (9. Jan 2013)

foerster7891 hat gesagt.:


> Hi,
> ich soll die Frage beantworten ob in Java in abstrakten Klassen / konkreten Klassen / Schnittstellenklassen - konstante/variable Attribute enthalten seien dürfen.


ja,ja
ja,ja,
ja,nein.



foerster7891 hat gesagt.:


> Sind konstante/variable Attribute einfach Variablen in der Klasse -> also entweder final oder eben nicht final?


ImPrinzip ja, aber
Von Konstanten spricht man in Java, wenn 
	
	
	
	





```
static final
```
 davor steht.
Steht nur  
	
	
	
	





```
final
```
 würde ich es ein "Attribut" nennen, weil es irgendwie charakteristisch für dieses Objekt ist. (für das Objekt betrachte ist es eine Konstante, kann (und sollte) aber in verschiedenen Objekten andere Werte haben).

Variablen ohne 
	
	
	
	





```
static
```
 oder 
	
	
	
	





```
final
```
 nenne ich "Feld", weil sie den Zustand des Objektes bestimmen.

Variablen nur mit 
	
	
	
	





```
static
```
 sind Klassenvariablen.

Wichtig: sind die in 
	
	
	
	





```
final
```
 Referenzen gespeicherten Objekte veränderlich (wie z.B. ein Array) sind dass zwar offiziell Konstanten, man darf sie dann aber nicht als solche ansehen...

bye
TT


----------



## foerster7891 (9. Jan 2013)

hab hier gerade gelesen:
Abstrakte Klassen, die nur abstrakte Operationen definieren und keine Attribute besitzen, heißen Schnittstellenklassen (engl. Interface Classes).

Damit dürfte doch eine Schnittstellenklasse weder variable noch konstante Attribute besitzen oder?

Sonst auf jeden Fall schon mal danke^^.


----------



## Timothy Truckle (9. Jan 2013)

foerster7891 hat gesagt.:


> hab hier gerade gelesen:
> Abstrakte Klassen, die nur abstrakte Operationen definieren und keine Attribute besitzen, heißen Schnittstellenklassen (engl. Interface Classes).


Das ist so allgemein wie es da steht richtig, aber in Java ist _Schnittstellenklassen(=Interface)_ etwas besonderes.
In C++ kann ich vom mehreren Klassen erben, in Java nur von einer. Daher gibt es in Java das Konzept des 
	
	
	
	





```
Interface
```
 (mit den Schlüsselwort 
	
	
	
	





```
interface
```
 das es in C++ nicht gibt). Java Klassen können mehrere  Schnittstellenklassen implementieren.



foerster7891 hat gesagt.:


> Damit dürfte doch eine Schnittstellenklasse weder variable noch konstante Attribute besitzen oder?


Falsch, sie dürfen (in Java) Konstanten enthalten.
Die Spezifikation von Java sagt, dass alle Variablen in Interfaces 
	
	
	
	





```
static final
```
 sein müssen. Bis einschließelich Java 1.4 gab es einen Kompilierfehler, wenn man das nicht beachtete, seit Java 1.5 wird  
	
	
	
	





```
static final
```
 (genau wie 
	
	
	
	





```
public
```
) intern ergänzt.

bye
TT


----------

