# Vererbung von mehreren Klassen?



## Spezi (11. Sep 2006)

Hi,

ich habe ein problem, das man eigentlich wunderbar lösen könnte, wenn ich mehrere klassen
vererben könnte. 
denn ich habe zwei jframe fenster:


```
public class Window extends JFrame
```

und 


```
public class Window2 extends JFrame
```

ich habe aber in meinem ersten fenster ein array, das ich auch im zweiten fenster benutzen kann.

hab auch schon nachgelesen und festgestellt, dass man mit java nicht mehrere klassen vererben kann.

jetzt würde mich interessieren, ob es einen trick gibt, wie man das trotzdem anstellen könnte oder wie ich mein problem lösen kann?


gruß
sebastian


----------



## SnooP (11. Sep 2006)

Soll das zweite Fenster die gleichen Daten nutzen - also das identische Array? Dann wäre Vererbung eh die falsche Wahl gewesen...


----------



## Spezi (11. Sep 2006)

ja es sollte das identische array verwenden... was wäre den die richtige wahl??


----------



## SnooP (11. Sep 2006)

du übergibts dem Objekt der zweiten Klasse das Array als Parameter - am besten schon im Konstruktor (nachdem das Array zumindest initialisiert wurde):


```
public class Window2 extends JFrame {
   int[] theArray;

   public Window2(int[] theArray) {
       this.theArray = theArray;
   }
//...
}
```

Irgendwo da, wo du Window2 erstellst, also z.B. in Window musst du dann das existierende Array übergeben:

```
//myArray ist das besagte Array in Window
Window2 win2 = new Window2(this.myArray);
```

Wenn du außerhalb von Window oder Window2 auf myArray zugreifen willst, brauchst du natürlich noch eine entsprechende get-Methode, um an das Array zu kommen, um es Window2 übergeben zu können.


----------



## Spezi (11. Sep 2006)

damit habe ich leider keine erfahrung, kannst du mir einen link geben, wo ich das mit der get mehtode und dem übergeben nachlesen kann?


----------



## Anmeldeboykottierer (11. Sep 2006)

Hi,
da brauchst du keinen speziellen Link zu. Auch diese Idee ist eventuell nicht das beste Design. Daten und Logik sollten immer schön von ihrer Darstellung getrennt bleiben. So ganz Alternativ, wenn zwei verschiedene Klassen auf ein Datum zugreifen sollen, bietet sich eine dritte Klasse an, die diese Datum verwalten. Das hat den Vorteil, dass du auch aus zig anderen Klassen auf dieses Datum zugreifen kannst ohne dich hier um die Reihenfolge der Erzeugung kümmern zu müssen. 

Getter und Setter sind wiederum sehr einfach Methoden. Du solltest in Java Programmen deine Variablen private halten und den Zugriff über getter (lesend) und setter (schreibend) vornehmen. Das bietet dir gleich mehrere Vorteile, zum Beispiel kannst du so Variablen nur lesbar gestallten oder dem Schreibzugriff eine andere Sichtbarkeit geben als dem Lesenden.
Ausserdem kannst du Daten validieren und auch den Wert einer Berechnung zurückgeben.

Die Konvention sieht dabei wie folgt aus:

```
private T t;

<Sichtbarkeit> T getT() {
  return this.t;
}

<Sichtbarkeit> void setT(T t) {
  this.t = t;
}
```

Wobei T natürlich der entsprechende Datentyp ist und <Sichtbarkeit> dann private, protected, public ist.

Gruß Der Anmeldeboykottierer


----------

