T
theomega
Gast
Hallo Leute,
ich habe da ein recht komplexes Problem und ich steh gerade ziemlich auf dem schlauch:
Es geht um folgendes:
1. Eine Basisklasse, die abstrakt ist und eine statische(!) Membervariable hat. Diese wird von der Basisklasse aus lesend verwendet um etwas damit zu tun.
2. Mehrere Klassen die von der Basis erben (Extends), dabei wird einmalig im "static" teil die Variable gesetzt. Für jede Klasse soll der Wert der Variable ein anderer sein können.
Mal ein kleines Beispiel, damit es deutlicher wird:
Die Basisklasse hat die statische Variable "hilfetext". Diese kann mit der Funktion "hilfeanzeigen" ausgegeben werden. Jede Unterklasse setzt nun den hilfetext entsprechend ihrer Aufgabe.
Das funktioniert im Kopf gut, geht nur in Java schief: Die statische Variable existiert nicht für jede Unterklasse einmal sondern nur einmal für die Basisklasse, damit geht das natürlich schief.
Ich habe das hier mal Programmiert:
Die Ausgabe ist:
dabei ist ja a2 ein Auto und ich hätte gerne das dasteht:
Versteht jemand mein Problem und kann mir einen Hinweis geben ob es dafür eine Lösung geben kann und wenn ja wie ich das realisieren kann?
Danke schonmal
TO
ich habe da ein recht komplexes Problem und ich steh gerade ziemlich auf dem schlauch:
Es geht um folgendes:
1. Eine Basisklasse, die abstrakt ist und eine statische(!) Membervariable hat. Diese wird von der Basisklasse aus lesend verwendet um etwas damit zu tun.
2. Mehrere Klassen die von der Basis erben (Extends), dabei wird einmalig im "static" teil die Variable gesetzt. Für jede Klasse soll der Wert der Variable ein anderer sein können.
Mal ein kleines Beispiel, damit es deutlicher wird:
Die Basisklasse hat die statische Variable "hilfetext". Diese kann mit der Funktion "hilfeanzeigen" ausgegeben werden. Jede Unterklasse setzt nun den hilfetext entsprechend ihrer Aufgabe.
Das funktioniert im Kopf gut, geht nur in Java schief: Die statische Variable existiert nicht für jede Unterklasse einmal sondern nur einmal für die Basisklasse, damit geht das natürlich schief.
Ich habe das hier mal Programmiert:
Code:
public class StaticTest {
public static void main(String[] args) {
Auto a = new Auto();
System.out.print("a: ");
a.hilfe();
Mixer m = new Mixer();
System.out.print("m: ");
m.hilfe();
Auto a2 = new Auto();
System.out.print("a2:");
a2.hilfe();
}
}
abstract class BaseClass {
protected static String hilfetext;
public void hilfe() {
System.out.println(hilfetext);
}
}
class Auto extends BaseClass {
static {
Auto.hilfetext = "Mit einem Auto kann man durch die Gegend fahren";
}
}
class Mixer extends BaseClass {
static {
Mixer.hilfetext = "Mit einem Mixer kann man mehrere Gegenstände mixen";
}
}
Die Ausgabe ist:
Code:
a: Mit einem Auto kann man durch die Gegend fahren
m: Mit einem Mixer kann man mehrere Gegenstände mixen
a2:Mit einem Mixer kann man mehrere Gegenstände mixen
dabei ist ja a2 ein Auto und ich hätte gerne das dasteht:
Code:
a: Mit einem Auto kann man durch die Gegend fahren
m: Mit einem Mixer kann man mehrere Gegenstände mixen
a2: Mit einem Auto kann man durch die Gegend fahren
Versteht jemand mein Problem und kann mir einen Hinweis geben ob es dafür eine Lösung geben kann und wenn ja wie ich das realisieren kann?
Danke schonmal
TO