# Variable in anderen Klassen benutzen



## rodanyboy (23. September 2007)

Hallo,
ich habe ein Programm bekommen welches eine Superklasse und eine Subklasse enthält.
In der Subklasse arbeite ich mit verschiedenen Variablen ( int i)
sowie mit Arrays.
Diese möchte ich jetzt in der Superklasse weiterbenutzen.
Ich bekomme es aber leider nicht hin. Währe nett falls mir einer helfen könnte.

Danke


----------



## DnC (23. September 2007)

Benutzt die Superklasse die Subklasse nur oder ist die Subklasse auch abgeleitet?
Im ersten Fall würde es sicher reichen, die Variablen in der Subklasse als public zu deklarieren.

Edit: Bei mir klappt folgendes:

Code der Superklasse

```
package testpackage;

public class Superclass {

	static Subclass cls = new Subclass();
	
	public static void main(String[] args)
	{
		System.out.println(cls.work(2));
		System.out.println(cls.lastI);
	}
}
```

Code der Subklasse:

```
package testpackage;

public class Subclass extends Superclass {

	public int work(int i)
	{
		lastI=i;
		return i*2;
	}
	
	public int lastI = 0;
}
```


----------



## rodanyboy (9. Oktober 2007)

Danke

So einfach darauf zugreifen? Ich denke wenn die Variablen public sind, können sie nur von Methoden und Objekten der eigenen Klasse genutzt werden. 
Aber kann auch sein das ich falsch liege, dazu müßte ich länger programmmieren.

Ich habe jedenfalls in Eclipse über rMT - source - mit Getters und Setters gearbeitet. In der Subklasse die Variablen (hat sich sogar um Listen gehandelt) über Getters und Setters zugängig machen. In der Superklasse kann dann mit .get() auf ... zugegriffen werden!
z.B.
Double dz = myActionListener.getZkomp().get(index);

auf Zkomp aus Klasse myActionListener zugreifen

Gruß
Dr. Java


----------



## DnC (9. Oktober 2007)

rodanyboy hat gesagt.:


> So einfach darauf zugreifen? Ich denke wenn die Variablen public sind, können sie nur von Methoden und Objekten der eigenen Klasse genutzt werden.



genau andersrum ;-) public = öffentlich --> alle Klassen können dieses Element sehen...
anders bei private, protected oder wie das bei Java auch heißen mag...


----------



## rodanyboy (9. Oktober 2007)

Jo stimmt. Hab auch gerade nochmal nachgelesen. 
Mit public definierte Merkmale erlauben also allen Klassen den Zugriff.


----------



## zeja (10. Oktober 2007)

Das ist vom Design her aber absolut nicht schön.

Eine Superclass sollte nicht die Variablen einer Subklasse benutzen. Du solltest lieber in der Superclass die Variablen die du in beiden Klassen benutzt als protected deklarieren. Aber nachdem eine Superclass eigentlich nichts von Subklassen wissen sollte ist das andersherum nicht sinnvoll.


----------



## rodanyboy (11. Oktober 2007)

Aha danke!

Werd mich mal mehr mit beschäftigen um das alles zu Verstehen.
Danke


----------

