Interface Klassen gegenseitig kommunizieren

noChecker

Mitglied
Hallöchen...hätte mal ne Frage zu Interface:

Ich habe ein Interface welches in Klasse A und B implementiert ist. Klasse B erzeugt eine neue
Klasse A. Über das Interface kann ich dann in Klasse B auf die Methoden von Klasse A zugreifen.
Jetzt möchte ich aber von der Klasse A auf die Methoden von Klasse B zugreifen, ohne eine neue Klasse B in A zu erzeugen...würde ja dann eh ein Loop werden oder ?? Wie greif ich also von A auf B-methoden zu ?????

Mein Problem ist ich möchte über die Klasse A auf das JTextField in B zugreifen. Ich hoffe ich habe es verständlich ausgedrückt.


Java:
public interface iface{

  public getJTextfield();
}

public class A implements iface{


 private JTextField tf;

public a(){

 tf = new JTextField();
}


public class b implements iface{

private a klasse:
private iface ineu;
private JTextField tf2;

public b(){

tf2 = new JTextField();
klasse = new a;
ineu = a;
ineu.getJTextField();
}
}
 
Zuletzt bearbeitet:
Du könntest z.B im Konstruktor der Klasse A eine Instanz der Klasse B übergeben. Da kannst du in A auf die Methoden der übergebenen Klasse B Instanz zugreifen.
 
Hallo dann bekomm ich aber einen Stackoverflow..

Exception in thread "main" java.lang.StackOverflowError

Hättest du ein kleines Beispiel??? würd mir sehr helfen
 
Hallöchen...hätte mal ne Frage zu Interface:

Ich habe ein Interface welches in Klasse A und B implementiert ist. Klasse B erzeugt eine neue
Klasse A. Über das Interface kann ich dann in Klasse B auf die Methoden von Klasse A zugreifen.
Jetzt möchte ich aber von der Klasse A auf die Methoden von Klasse B zugreifen, ohne eine neue Klasse B in A zu erzeugen...würde ja dann eh ein Loop werden oder ?? Wie greif ich also von A auf B-methoden zu ?????

Mein Problem ist ich möchte über die Klasse A auf das JTextField in B zugreifen. Ich hoffe ich habe es verständlich ausgedrückt.


Java:
public interface iface{

  public getJTextfield();
}

public class A implements iface{


 private JTextField tf;

public a(){

 tf = new JTextField();
}


public class b implements iface{

private a klasse:
private iface ineu;
private JTextField tf2;

public b(){

tf2 = new JTextField();
klasse = new a;
ineu = a;
ineu.getJTextField();
}
}

Dieser Code müsste ja mal ein Haufen Compile-Errors liefern!

Nach einigen Aufräumaktionen...:

Java:
public interface Interface {
	public JTextField getJTextField();
}

public class A implements Interface{


	private JTextField tf;

	public A(){
		tf = new JTextField();
	}

	public JTextField getJTextField(){
		return tf;
	}
}


public class B implements Interface {

	private A klasse:
	private Interface ineu;
	private JTextField tf2;

	public B(){
		tf2 = new JTextField();
		klasse = new A();
		ineu = A; // bringt immer noch Compile Error
		ineu.getJTextField();
	}

	public JTextField getJTextField(){
		return tf2;
	}
}

So und da jetzt alles VIEL besser aussieht, lässt sich da auch was machen.

Bei der kommentierten Stelle ist ziemlich wirr, was du versuchst:
WENN du schon mit interface arbeitest, ist es sinnlos, dass du direkt einen Verweis auf die Klasse erzeugst.
Besser wäre also statt "private A klasse" einfach nur ein "private Interface klasse" (wobei ich den Variablennamen klasse unpraktisch finde)
 
Hallo Mujahiddin ..vielen Dank für die Korrektur..die Variablennamen sind super unpraktisch...

Java:
 ineu = A; // bringt immer noch Compile Error

wäre dann natürlich

Java:
ineu = klasse // wobei der name "klasse" wirklich doof war!!!

Wobei mir das in B keine sorgen macht....
sondern weiss einfach nicht wie ich in A auf das JTextField von B mit Hilfe des Interface zugreifen kann.

In meinem Projekt ist es so:

ich habe zwei Klassen und das dazugehörige Interface mit den methoden.

in Main wird eine Instanz der Klasse B erzeugt.
in B wird eine Instanz der Klasse A erzeugt.

Jetzt will ich in der Instanz von A auf das JTextField von der Instanz B zugreifen...Ich hoffe jetzt wird es klarer...

PS - DANKE FÜR EURE GEDULD MIT MIR!!!!!🙂
 
Zuletzt bearbeitet:
Hättest du ein kleines Beispiel??? würd mir sehr helfen

Java:
public interface I {

    public String getString();
}

class A implements I {

    B b;

    public A(B b) {
        this.b = b;
    }

    @Override
    public String getString() {
        return "A";
    }

    public static void main(String[] argv) {

        B b = new B();
        System.out.println(b.getString());
        System.out.println(b.getA().getString());
    }
}

class B implements I {

    private A a;

    public B() {
        a = new A(this);
    }

    @Override
    public String getString() {
        return "B";
    }

    public A getA() {
        return a;
    }
}
 
Java:
public interface LeInterface {
	
	public int rechneWas();

}

Java:
public class DieErsteKlasse implements LeInterface{
	
	public DieErsteKlasse(){
		new DieZweiteKlasse(this);
	}

	@Override
	public int rechneWas() {
		return 0;
	}

      public static void main(String[] args) {
		new DieErsteKlasse();
	}
}

Java:
public class DieZweiteKlasse implements LeInterface{
	
	public DieZweiteKlasse(LeInterface eineKlasseDieDieseHierErzeugtUndDasIntefaceImplementiert){
		
		System.out.println(eineKlasseDieDieseHierErzeugtUndDasIntefaceImplementiert.rechneWas());
		
	}

	@Override
	public int rechneWas() {
		return 1;
	}

}

*grml* zu langsam 😛ueh:
 
Zuletzt bearbeitet von einem Moderator:

Zurück
Oben