Hej,
auch wenn Marc und Struppi dir schon geantwortet haben will ich es mir nicht nehmen lassen dies nun doch noch abzuschicken, nachdem gestern Abend das "Nachricht absenden" aus irgendeinem Grund bei mir gestreikt hatte (*grrr*):
Woher weiß Java - wenn ich eine Klasse Instanzieren möchte- wo diese liegt?
Aus dem Zusammenspiel aus Klassenpfad und Import-Anweisungen.
Und wieso diese Schema:
alteKlasse neueKlasse = new alteKlasse; ?
Das versteh ich nicht! Es sollte wahrscheinlich auch heissen:
Klasse objekt1 = new Klasse();
Du wirst erstmal verstehen müssen, was in dieser einen Zeile alles steckt:
- Es gibt einen Bauplan, eine Klasse einen Typ 'Klasse'
- Diesem Typ kann man eine Variable objekt1 zuweisen. Die Variable verweist erstmal auf die
null
-Referenz. - Von dem Typ Klasse kann man Instanzen erzeugen, indem man den Kosntruktor
Klasse()
mit dem Schlüsselwortnew
aufruft. Jetzt wird ein Objekt angelegt, an der VM registriert, Speicher alloziert und ggf. bereits Felder in Klasse initialisiert. - Eine Referenz auf dieses Objekt wird in der Variablen
objekt1
gespeichert.objekt1
verweist also nicht mehr aufnull
sondern eben das neu instanzierte Objekt.
neueKlasse = alteKlasse; reichen?
1.) Nach dem was du oben geschrieben hast ist neueKlasse ein Variable für ein Objekt, alteKlasse der Bezeichner einer Klasse. Sowas geht nicht! Du musst wie ich schon geschrieben habe das Objekt über den Konstruktor aus der Klasse instanzieren. Hört sich kompliziert an? Ist es auch wenn man versucht OOP in 2 Tagen mit der Brechstange zu lernen!
2.) Du fragst dich vielleicht, wieso du vor die Variable objekt1
in meinem Beispiel nochmal die Klasse hinschreiben musst. Das hängt mit der Vererbung zusammen. Sei z.B. Klasse ein Erbe von UeberKlasse, hättest du auch genausogut schreiben dürfen
UeberKlasse objekt1 = new Klasse();
weil jedes Objekt vom Typ Klasse auch ein Objekt vom Typ Ueberklasse ist.
Sollten widererwarten sowohl neueKlasse als auch alteKlasse (deswegen ist es in Java wichtig zwischen Grpß- und Kleinschreibung zu unterscheiden) Objekte sein, Typkompatible Variablen sein, darfst du das auch machen, dann speicherst du halt die Referenz auf das die Variable alteKlasse zeigt nochmal in der Variable neueKlasse ab. Doppelt genäht hält besser.
Und wie zum Pinguin komme ich an die Klassen wie Math etc.? Woher soll man denn die Methoden kennen? Gibt es irgendwo eine Liste wie man die Klassen einbindet und welche Methoden es gibt?
Es gibt Bücher, Tutorials und natürlich die Javadoc
Desweiteren würde mich Interessieren wie ich aus meinen *.class Dateien richtige Anwendungen erstellen kann, ohne die von der Konsole aus zu starten (java Programm1)?
Indem du das Ding in ein JAR packst, die Manifest-Datei entsprechend schreibst und deinem Betriebssystem mitteilst, dass es Jar-Dateien automatisch mit der JVM ausführen soll. Oder per Webstart. Oder als Applet.
Zu guter letzt, in vielen Tutorials wird gesagt, dass jede Application eine main Methode braucht, wozu
Damit die JVM weiß wo sie einsteigen muss. Irgendwo muss ja der Interpreter/die JVM anfangen deinen Code abzuarbeiten. Das tut er/sie in der main-Methode.
Diese Frage
und was hat es mit "(String[] args)" aufsich?
und diese Anforderung
Kann ich meiner Appl. auch parameter mitgeben? Wie in dieser art z.B:
"java Programm1 -Dennis"?
hängen ganz eng zusammen.
In meinem Tutorial steht dass es so sein muss, mehr nicht.
Dein Tutorial taugt nichts. Schau dir mal den von mir verlinkten Thread an.
Sorry, aber ich habe bis jetzt nur mit Visual Basic programmiert und Java ist totales Neuland für mich....
Ich habe die Sorge, dass es das auch bleiben wird, wenn Du Dir nicht a) bessere Lernmaterialien zulegst und b) versuchst mit dem Kopf durch die Wand zu brechen. Die Stichworte die ich dir hier gegeben habe dürften dich für die nächsten Wochen beschäftigen ...
Beste Grüße
Biesterfeld
Art.1: Et es wie et es
Art.2: Et kütt wie et kütt
Art.3: Et hätt noch immer jot jejange
Das Kölsche Grundgesetz