Java: Wie man auf Methoden einer anderen Klasse zugreift
Ich habe versucht, zu vereinfachen, meine missliche Lage so viel wie möglich. Ich habe drei Klassen:
Alpha:
public class Alpha {
public void DoSomethingAlpha() {
cbeta.DoSomethingBeta() //?
}
}
Beta:
public class Beta {
public void DoSomethingBeta() {
//Something
}
}
Main:
public class MainApp {
public static void main(String[] args) {
Alpha cAlpha = new Alpha();
Beta cBeta = new Beta();
}
}
Ich hoffe, ich habe nicht über zu vereinfachen. Meine Frage ist, wie bekomme ich Zugang zu cBeta.DoSomethingBeta() aus Methode in der Alpha?
InformationsquelleAutor der Frage co757 | 2011-07-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie irgendwie geben die Klasse Alpha eine Referenz auf cBeta. Es gibt drei Möglichkeiten, dies zu tun.
1) Geben, Alphas Beta, die im Konstruktor. In der Klasse der Alpha-schreiben:
- und call-cAlpha = new Alpha(cBeta) aus der main()
2) geben Alphas ein mutator, der Ihnen einen beta. In der Klasse der Alpha-schreiben:
- und call-cAlpha = new Alpha(); cAlpha.setBeta(beta); aus der main(), oder
3) eine beta als argument zu doSomethingAlpha. in der Klasse der Alpha-schreiben:
Welche Strategie Sie verwenden, hängt von ein paar Dinge. Wenn Sie wollen, dass jeder einzelne Alpha eine Beta, verwenden Sie die Nummer 1. Wenn Sie möchten, dass nur einige Alphas haben eine Beta-Version, aber Sie wollen, dass Sie zu halten auf Ihre Betas auf unbestimmte Zeit, verwenden Sie die Nummer 2. Wenn Sie wollen Alphas Umgang mit Betas nur, während Sie anrufen doSomethingAlpha, verwenden Sie die Nummer 3. Geltungsbereich von Variablen ist kompliziert auf den ersten, aber es wird leichter, wenn Sie den Dreh raus. Lassen Sie mich wissen, wenn Sie haben keine Fragen mehr!
InformationsquelleAutor der Antwort krasnerocalypse
Methode 1:
Wenn die Methode DoSomethingBeta war statisch, Sie müssen nur anrufen:
Methode 2:
Wenn Alpha reicht von der Beta, könnte man sagen DoSomethingBeta() direkt.
Methode 3:
Alternativ müssen Sie haben Zugriff auf eine Instanz der Beta rufen Sie die Methoden aus.
Übrigens ist diese Hausaufgaben?
InformationsquelleAutor der Antwort Mark McLaren
Vielleicht brauchen Sie einige dependency injection
dann
InformationsquelleAutor der Antwort Felipe Cruz
Müssen Sie entweder erstellen Sie ein Objekt vom Typ Beta in die Alpha-Klasse oder die Methode
Wie Sie hier in den Main-Beta-cBeta = new Beta();
Wenn Sie möchten, verwenden Sie die variable, die Sie erstellen in Ihrem Haupt -, dann müssen Sie analysieren, um cAlpha als parameter, indem Sie die Alpha-Konstruktor Aussehen
InformationsquelleAutor der Antwort Mech0z
ein weiteres Klasse
//Zugriff auf Methoden
//Erfolg!
InformationsquelleAutor der Antwort Vinod Joshi
Habe ich eine andere Lösung. Wenn Alpha und Beta sind Ihr nur extra-Klasse, warum dann nicht eine statische variable mit dem Bild der Klasse.
Wie in der Alpha-Klasse :
Jetzt können Sie rufen Sie die Funktion in der Beta-Klasse, die nur mit diesen Zeilen :
InformationsquelleAutor der Antwort arqam