hab ein kleines problem an dem ich gerade hänge (ist das erste mal dass ich es mit java zu tun habe, also sorry wegen meines unwissens in fundamentalen dingen)
ich habe eine klasse, die für eine gui zuständig sein soll. ich möchste aus dieser klasse heraus auf eine variable in einer anderen klasse zugreifen. beide files sind im selben package. nur wie kann ich jetzt darauf zugreifen? mit "andereklasse.variable" funktioniert es nicht...
Du solltest dir in der Klasse, in der sich deine "zu lesende" Variable befindet, eine Methode getVariablenName() schreiben, die deine Variable als Rückgabewert hat.
Also z.B.
Code:
class A {
private String myVar;
public String getMyVar(){
return myVar;
}
}
Nur wenn du deine Variable als "public" deklarierst, dann könntest du mit Klassenname.Variablenname darauf zugreifen, sollte man aber nicht machen.
und dabei auch noch der Hinweis, das du natürlich von beiden Klassen vorer mit new Objekte erstellen musst - dann können die Objekte auch auf ihre Variablen zugreifen (sollten sie public sein) bzw. Methoden untereinander aufrufen... evtl. nochmal etwas über OOP in einem einfachen Java-Buch lesen? z.B. der Javainsel?
danke für die schnellen antworten.
leider funktioniert der zugriff so nicht, obwohl die variable als public deklariert ist.
ich habe meine hauptklasse (bzw eben eine instanz davon) und meine gui-klasse, welche aus der hauptklasser heraus mit "new" ins leben gerufen wird.
der zugriff in der guiklasse sieht dann so aus:
"...=hauptklasseninstanz.variable"
allerdings bekomm ich jetzt die fehlermeldung "package hauptklasseninstanz doesn't exist"...
public class Klasse1 {
public int var = 17; //wie gesagt - besser nicht public machen
//...
}
public class KlasseMain {
public static void main(String[] args) {
Klasse1 k1 = new Klasse1();
System.out.println(k1.var);
k1.var = 5;
System.out.println(k1.var);
}
Dazu müßte deine Leseklasse eine Instanz der Main-Klasse erhalten.
Am besten durch Übergabe im Konstruktur
Code:
class A {
B meinB;
public A(B meinB) {
this.meinB = meinB;
}
...
System.out.println(meinB.answer);
}
class B {
int answer = 42;
public static void main(String[] args) {
B b = new B();
A a = new A(b);
}
}
danke.
wenn ich dem konstruktor der guiklasse einen pointer auf die instanz der hauptklasse übergebe, und dann darüber auf die variablen zugreife sollte es auch gehen, oder?
also so:
Code:
RKNApp myhauptklasse;
//konstruktor der gui-klasse
public rkngui(RKNApp temp)
{
myhauptklasse=temp;
}
//lesefunktion
public void blubb()
{
x= myhauptklasse.variable;
}
1. Das Ding heißt Referenz und nicht Pointer (weil es kein Zeiger ist)
2. Warum hast du es nicht einfach ausprobiert?
3. Nimm lieber getter und setter statt direkt auf Felder eines Objekts zuzugreifen