# mehrere super klassen



## PrinzMartin (11. Okt 2007)

Moin Moin

Im Informatik Unterricht beschäftigen wir uns jetzt mit GUI's und wir wollen die GUI Klasse an sich nicht verändern sondern eine Verbindungsklasse zwischen GUI und Fachklasse schaffen. 
Das geht so lange gut, wie ich nur Buttons oder so habe, dann sage ich einfach:


```
public class cBtn extends JButton
{
meine ganzen Button Actions
}
```

so jetzt bekommen die Buttons in der GUI Klasse als Typ ganz einfach cBtn und schon läuft die sache...

wenn ich aber auch Textfelder habe, dann würde ich meiner Verbindungsklasse am liebsten auch Textfelder vererben..
Leider habe ich noch nicht herausgefunden, wie ich mehrere Sachen an eine Klasse vererben kann, also 


```
public class cInteraktion extends JButton extends JTextField.....
{
}
```

auch 


```
public class cInteraktion extends java.swing.*
{
}
```

funktioniert nicht...............



Gibt es da eine Möglichkeit einer Klasse mehrere Super Klassen zu vererben?


grazie in anticipo

mit freundlichen Grüßen
Martin


----------



## madboy (11. Okt 2007)

PrinzMartin hat gesagt.:
			
		

> ```
> public class cInteraktion extends java.swing.*
> ```


omg. Was hast du vor? :wink: 

Aber um es schnell auf den Punkt zu bringen: geht net. Du kannst in Java nur von *einer* Klasse erben. Für alles andere gibts Interfaces (implements xyz).


----------



## Yzebär (12. Okt 2007)

Ich verstehe rein logisch nicht, wie ein Element gleichzeitig ein JButton und ein JTextFeld sein soll... Wenn du ein GUI-Element erstellen möchtest, das einen Button und ein Eingabefeld beinhaltet, solltest du besser ein Panel (deine Klasse leitet dann von JPanel ab) erstellen, daß einen Button und ein Eingabefeld beinhaltet.


----------



## PrinzMartin (12. Okt 2007)

naja ein objekt soll das ja nicht sein, sondern ich hätte gerne eine Klasse, in der ich sowohl die Methoden des Buttons, wie auch die des Text Feldes habe aber mein Info Lehrer meinte auch da währen Interfaces nötig und das käme noch dran also werde ich denke ich so lange warte.......

 :wink: 

danke sehr für eure antworten


----------



## tuxedo (12. Okt 2007)

PrinzMartin hat gesagt.:
			
		

> naja ein objekt soll das ja nicht sein, sondern ich hätte gerne eine Klasse, in der ich sowohl die Methoden des Buttons, wie auch die des Text Feldes habe



Und was machst du mit Klassen wenn du sie nicht Instanziierst, sprich als Objekt zum "leben" erweckst? Müsstest dann alles static machen oder wie?


----------



## chilla (12. Okt 2007)

PrinzMartin hat gesagt.:
			
		

> ```
> public class cInteraktion extends java.swing.*
> {
> }
> ```



Das ist zu geil..  :lol: 

btw. Klassennamen sollten immer mit einem Großbuchstaben beginnen..

trotzdem thx, saved my day  :applaus:


----------



## tuxedo (12. Okt 2007)

Da wird Java unterrichtet. Aber der sogenannte Lehrer hat offensichtlich kein Plan dass Mehrfachvererbung nicht geht. 

Also uns wurde zu Beginn des Studiums erstmal die Basics erklärt bevor wir zu einer Programmiersprache übergegangen sind. 

Was wird an den Schulen denn noch gelehrt?


----------



## Evil-Devil (12. Okt 2007)

Vermutlich ist das nur ein Info Kurs 

Bei uns damals in der Ausbildung wurden wir vor dem ersten und während der ersten Sprache die wir im Rahmen der Schulischen AUsbildung genutzt haben (Turbu Pascal) mit jeder Menge Struktogramme gequält


----------



## PrinzMartin (13. Okt 2007)

Nene das liegt nicht an dem Lehrer, ich habs ja jetzt dank seiner Hilfe auch...


der bespricht mit uns immer ein "Problem" und dann gibt der uns 2 Stunden und halt zu hause die Zeit das zu Lösen so wie wir es machen würden und dann wird auf dem was wir geschafft haben entweder aufgebaut oder verbessert...

dass mit der Mehrfachvererbung kam nicht von ihm das war meine Idee... die im nachhinein gesehen schwachsinn war (nicht nur weil es einfach unmöglich ist)^^

PS:

Reißt das 


```
extends java.swing.*
```

nicht so aus dem Kontext, dass das schwachsinn ist ist mir schon klar^^ ich wollte ja nur darstellen was ich meine ;-)


----------



## Tobias (13. Okt 2007)

Wenn man nach Wegen sucht, wie in Java Mehrfachvererbung syntaktisch ausgedrückt werden könnte, dann war "extends javax.swing.*" doch gar keine schlechte Idee. Aber Gottseidank gibt es keine Mehrfach(implementierungs-)vererbung in Java. Für die wenigen Fälle, wo man es brauchen kann, kann man auf AspectJ gehen, aber das ist ein ganz anderes Thema ...

mpG
Tobias


----------



## Gast (13. Okt 2007)

Hi,

also genauso wie ich * importe (also z.B. import javax.swing.*) nicht mag. wäre meiner Meinung nach auch in einer Mehrfachvererbung dies ein schlechter Ausdruck. Denn bei so einem Ausdruck geht völlig verloren, welche Klassen konkret angesprochen und benötigt werden. Mal ganz davon abgesehen, dass ich mir durch so etwas auch Programminstabilitäten hereinholen kann. Denn woher soll ich als entwickler wissen, welche Klassen in dem package beim Entanwender verfügbar sind? Dies gilt natürlich alles nur unter dem Aspekt der Mehrfachvererbung, der ja in Java (zum Glück) nicht vorhanden ist.

Gruß,
Andreas


----------

