Funktion aus übergeordneter Klasse starten


Rici

Grünschnabel
So, ich steh noch relativ am Anfang meiner Java-Erfahrung, daher dürften nicht alle Formulierungen gleich schlüssig sein, ich bitte hier einfach um Rückfrage. :)

Ich hab ein Package (Unterordner) erstellt und eine der class-Dateien aus diesem Package soll eine Funktion aus der übergeordneter main-Klasse starten (namentlich automat.java).

Das geht relativ problemlos, wenn ich beim Ausführen gleich
-java -classpath .. automat
angebe. Es wäre mir jedoch wesentlich lieber, wenn ich weiterhin einfach nur die automat im Stammverzeichnis starten könnte. Vermutlich lässt sich dies über classLoader-Geschichten in dem Package lösen, aber ehrlich gesagt, hab ich keine Ahnung, wie das funktioniert.

Vielleicht kann jemand helfen..?

Edit: Kurze Übersicht über den Aufbau
Teil1/automat.java (Hier ist die main-Funktion drin)
Teil1/geld/verwaltung.java (Diese Klasse soll später auf die Funktion "anzeigen" von automat zugreifen)
 
Zuletzt bearbeitet:

takidoso

Erfahrenes Mitglied
hmmm irgendwie verstehe ich nicht ganz Dein Problem.
Ich vermute mal, Du hast vielleicht noch ein Handling-Problem mit dem verwenden des Klassenpfades? Oder möchtest gerne alle Klassendateien in eine Bibliothek zusammenführen, so dass der Klassenpfad nicht so elend lang wird?
Vielleicht hilft Dir ja dieser Thread weiter ...
http://www.tutorials.de/forum/java-grundlagen/319989-jar-datei-einbinden-ohne-mitzukompilieren.html

Ansonsten bitte nochmal mit anderen Worten versuchen zu erklären.
 
Zuletzt bearbeitet:

Kai008

Erfahrenes Mitglied
Also, wenn ich das jetzt richtig verstanden habe musst du einfach bei der Intialision der Instanz des Objektes was die Methode aufrufen muss die jeweilige classe per this-Pointer übergeben werden. Und dann halt die andere die Methode aufrufen. Ich denke btw. nicht dass du eine abstract verwendest, auch wenn es anfang so geklungen hat.

Hier ein kurzes Beispiel:

Java:
public class Automat extends irgendwasvondemgeerbtwird
{
	public Automat()
	{
		new geld.Verwaltung(this);
	}
	public void tueIrgendWas()
	{
		System.out.println("Methode wurde aufgerufen!");
	}
	public static void main(String[] args)
	{
		new Automat();
	}
}
public ckass Verwaltung
{
	public Verwaltung(Automat automat)
	{
		this.automat.tueIrgendWas();
	}
}

Sollte so funsen. Natürlich hast du jetzt noch die Zeile die das package ect. angibt, aber ist ja nicht so wichtig.
So wie der Aufbau aussieht liegt die Automat im default, mache das nicht. Ich kenne keinen Weg von dort zu exportieren. Ach ja, und man schreibt in der Regel Klassen groß und Variablen und Packages klein.
 

Forum-Statistiken

Themen
272.356
Beiträge
1.558.615
Mitglieder
187.830
Neuestes Mitglied
hansmeiser