Anfängerfrage: Probleme mit eigenem Package und Aufruf nicht statischer Funktionen

Katjusha

Mitglied
Vorweg möchte ich mich bedanken für die vielen netten und schnellen Antworten auf meinem Weg PHP zu lernen. Ich komme dort nun von alleine klar und kann meine Probleme selber lösen. Werde versuchen mein noch bescheidenes Wissen bei anderen hier Fragenden anzuwenden und wenn möglich diese zu beantworten.

Ich beginne nun damit Java kennenzulernen und benutze den JBuilder 2005 als Testumgebung. Macht auch ziemlich viel Spaß, ist nur sehr frustrierend, da neue Welt. :)

Zu meinen Fragen:

a) Ich habe ein eigenes Package erstellt genannt Test. Nun möchte ich auf die darin enthaltene Klasse und deren Methoden zurückgreifen. Ich habe versucht das Package mit dem direkten Namen und auch mal mit dem Namen des Package+Klassennamen aufzurufen:

import Test.*;
oder
import Test.Test1;

Meine Main kann aber die Methode in beiden Varianten nicht sehen, welche in test1 drin enthalten sein soll. Theoretisch sollte ich ja auch ohne den Import mittels
Test.Test1.Testmethode();
auf die Methode zugreifen können insofern sie nicht private ist?

(Die Methode funktioniert prima wenn ich sie in die Main klemme, was aber unübersichtlich ist)

b) Es ist ja nicht möglich aus einer statischen Methode heraus eine nicht-statische Methode aufzurufen. Das hab ich verstanden. Man muß eine Instanz (hoffe das ist so richtig) von der Methode anlegen um dies zu tun. Das macht man denke ich mit

Script v = new Script();

und kann dann die nicht-statische Methode mittels

v.Testmethode("blub");

aufrufen. Korrekt?

Ok, Frage ist nun wie ich eine Methode hier aufrufe welche ich direkt ansteuern und nicht importieren möchte?

v.Test.Test1.Testmethode("blub");

wird wohl nicht die Lösung sein oder?
 
zu a)
Entweder ist die Methode statisch (static), dann würde dein Aufruf rein theoretisch gehen. wenn nicht, kannst du auch von Test1 eine Instanz erzeugen:
Code:
Test1 einTest = new Test1();
dann kannste auch auf Objektmethoden zugreifen mit
Code:
einTest.Testmethode("nix");

b) Eigentlich ähnlich wie bei a). ist sie statisch geht es mit:
Code:
Test.Test1.Testmethode("nix");
ansonsten ein Objekt erzeugen.
Wahlweise kannst du auch eine statische Methode in Test1 schreiben, das dir ein neues Objekt liefert:
Code:
public static Test1 getTest() {
return new Test1();
}
AUfruf dann:
Code:
Test.Test1.getTest().Testmehtode("nüschts");
Das sind meiner Meinung nach deine Möglichkeiten.
 
Zurück