bytes Geschrieben 16. Februar 2002 Teilen Geschrieben 16. Februar 2002 hallo... ich habe gerade angefangen mich in Java einzulesen und schon treten Fragen auf die in keinem meiner Bücher erklärt wird. Es wäre toll wenn mir jemand die nun folgenden Begriffe mal erklären könnte so das sie auch ein Newbie versteht. HIer die Begriffe: Konstruktor(en): Implementieren: Referenz: wann nimmt man static: wann nimmt man void: Parameter: Initialisieren: Vielen Dank im Voraus für Eure Hilfe. cu bytes Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ExAzubi Geschrieben 17. Februar 2002 Teilen Geschrieben 17. Februar 2002 Na gut, bin zwar auch erst zwei dabei JAVA zu lernen, aber ich versuch nach bestem Wissen und Gewissen zu Antworten. Konstrucktoren : Wenn du von einer Klasse eine Instanz (Objekt) erzeugt, werden im Konstruktor schon vorher Variabelen initalisert (bekommen einen Wert zugewiesen, oder andere Objekte erzeugt, die die Klasse braucht.) |mplementieren : Andere Klassen in einer Klasse einbauen?!? Referenz : In JAVA kann man nicht wie in C++ mit den Übergebenen Variabelen arbeiten, sondern nur mit deren Wert. Wenn du z.B i=100 an die methode getWurzel übergibst, bekommt i nicht den Wert 10 zugewiesen, sondern die Methode arbeitet nur mit einer Kopie von i. static : Benutzt man bei Klassen von denen man keine Instanz erzugen kann, oder für Klassenvariabelen. Von der Klasse public static Hallo{} kannst du keine Instanz erzeugen Von der Klasse public Hallo1{} kannst du eine Instanz erzeugen. Variabelen mit static kannst du nur mit Vorangestellten Klassennammen Ansprechen, z.B. Hallo.i void : Benutzt man dann wenn die Methode keinen Wert zurückgeben darf. Parameter : Übergabewerte Initalisieren: Der Variabelen einen Wert zuweisen. int i; Varabelendeklaration ohne initalisierung int i = 1; Varaibelendeklaration mit initalisierung. Hoffe ich konnte dir Weiterhelfen. Wenn ich Fehler gemacht habe, bitte ich andere Leser um korrektur. DVO P.S. Hast aber ein sehr schlechtes Buch zum Einlesen genommen. Ich benutze bei meinem "Lehrgang" GoTo JAVA2. Kauf dir besser das, oder kostenlos unter www.javabuh.de Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
afoTommy Geschrieben 19. Februar 2002 Teilen Geschrieben 19. Februar 2002 Hi Leute, kleine Ergänzung zum Thema STATIC: ------------------------------------------------- Allgemein: static bedeuted, wie dvo schon sagte, dass die Variable oder Methode die dieses Attribut hat nicht instanziert werden muss. Einsatz: Beispiel: Du kannst z.B: ein Programm schreiben, das kein einziges Objekt instanziert. public static void hello() { System.out.println("Hello"); } Dieses Proggie würde laufen, ohne, dass du ein Objekt brauchst, weil das Attribut static die Variable oder Methode in jedem Fall von Anfang (der Laufzeit des Proggies) an instanziert. Wann und ob du einen Konstrucktor für die Klasse aufrufst bleibt dir überlassen. Die satischen Variablen und Methoden kanns du ind der ganze Klasse nutzen. kleine Ergänzung zum Thema PARAMETER: -------------------------------------------------------- Parameter sind Werte, die von einer Methode zur anderen weitergegeben werden, ohne die Verwendung einer Varibalen. Beispiel: void gibWasWeiter() { int i; i = 5 + 20043 - 300; i = i + 400; empfangeWas(i); } empfangeWas(int p) { //mach irgendwas mit p } Erklärung: in "gibWasWeiter" wird eine Methoden - Variable i deklariert und in 2 Schritten mit einem Wert belegt. Durch den Aufruf der Methode "empfangeWas(i)" wir i in der Klammer als Parameter weitergegeben. Die Methode "empfangeWas(i)" erwarted ein Interger Parameter, dem es den Namen p gibt. Was vorhin i war ist jetzt p und kann als p in "empfangeWas()" verwendet werden. So, das war mein Beitrag, jetzt hab ich keine Lust mehr. Ich hoffe niemandem auf den Schlips getreten zu sein, da die Ausführunegn wirklich für 'Javain21Tagenleser' sind. Wer inhaltliche Fehler findet bitte mich korrigieren, wer Rechtschreibfehler findet darf sie behalten. Greets Tommy Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
k2-fly Geschrieben 19. Februar 2002 Teilen Geschrieben 19. Februar 2002 Um sich das mit static einfacher zu merken: Methoden oder Variablen die als static deklariert sind, werden nur einmal in den Arbeitsspeicher geladen. dadurch genügt es z.B. eine Static Variable einmal zu ändern obwohl man vielleicht schon 100 Objekte erzugt hat. Die Änderung wirkt sich auf alle aus, da die Variable im Arbeitsspeicher ja ein und die selbe ist Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bytes Geschrieben 19. Februar 2002 Autor Teilen Geschrieben 19. Februar 2002 hallo... Vielen Dank für die Hilfe....Am Anfang dachte ich es könnte mir niemand erklären, aber dann doch die qualifizierten und auch für mich verständlichen Antworten... Vielen Dank nochmal....und ich glaube ich werde das Buch mal wechseln müssen...es erklärt solche doch meineserachtens wichtigen Dinge überhaupt nicht... MFG bytes Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
k2-fly Geschrieben 19. Februar 2002 Teilen Geschrieben 19. Februar 2002 Mir ist gerade noch ein super beispiel für static eingefallen: Wenn man im IE irgendwelche einstellungen ändert, sind sie in einem 2. oder 3. IE Fenster nicht geändert :-( wären die Einstellungen jetzt aber static..... naja gut egal Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Solexa Geschrieben 28. Februar 2002 Teilen Geschrieben 28. Februar 2002 Statische Methoden und Variablen sind in allen Instanzen von einer Klasse verfügbar... denk mal, daß die Idee, die dahinter steckt die Datenkapselung ist. Benutz werden static Methoden und Variablen meistens für konstante (gleichbleibende) Werte (z. B. für die Farbe Magenta (die bleibt immer gleich)) oder sich nicht ändernde Objekte. Auch muß man nicht eine Instanz einer Klasse haben, um auf auf die statischen Meth. und Var. einer Klasse zugreifen zu können. z.B. von der Klasse Color, einfach Color.red hinschreiben... ohne eine Instanz der Klasse Color bilden zu müssen. Der Konstruktor(Methode) hat den selben Namen wie dessen Klasse und kein Rückgabewert. Wenn Du eine neue Instanz einer Klasse schaffst, dann wird erstmal der Konstruktor aufgerufen(vereinfacht, beim Konstruktor startet das Programm). In einer Klasse kannst Du mehrere Konstruktoren haben, dann kommt es auf die Parameter an, die Du bei der Instanzbildung dem Konstruktor weitergibst. Anhand der Parameter entscheidet das Programm welchen Konstruktor er aufruft(was mich jetzt wieder an Polymorphismus erinnert, oder k2-fly? Verwechsel ich da jetzt was?). Parameter ist das was in den Klammern steht. Einfachstes Beispiel System.out.println("Hello, Java!"); "Hello, Java!" ist dein Parameter (: Also, mit den Referenzen sieht es ein wenig komplizierter aus. In Java gibts die primitiven Typen, wie: Boolean, Char, Byte, Short, Int, Long, Float, Double (diese werden einfach kopiert, wenn sie als Argument/Parameter weitergegeben werden). Dann gibt es noch die Referenz-Typen. Wenn wir eine neue Klasse Gesicht bilden, dann schaffen wir auch einen neuen Typ mit dem Namen Gesicht (<-- Referenztyp). Eine Referenz ist einfach ein Name für ein Objekt. Folgendes Beispiel: Gesicht Klara = new Gesicht(); Gesicht ZwillingKlara = Klara; Klara und ZwillingKlara sind keine eigenständige Objekte, sondern referieren auf das Objket Gesicht. Wenn Du im Objekt Gesicht etwas änderst, dann ändert sich bei Klara und ZwillingKlara auch etwas *smile* Also, nochmal anders... Du hast ein Objekt/Klasse Gesicht gebildet. Mit dem Schlüsselwort new hast Du den folgenden fünf Personen ein Gesicht gegeben : Klara, ZwillingKlara, Stefan, Klaus, Mathilda. Gesicht Stefan = new Gesicht(); Gesicht Klaus = new Gesicht(); Gesicht Mathilda = new Gesicht(); Nun hast Du nicht 6 Objekte, sondern 1 Objekt Gesicht und fünf Namen die auf dieses Gesicht deuten. Änderst Du was bei Gesicht(z.B. die Nasennormalgröße), dann ändert es sich bei den fünf Namen auch. Falls ich was nicht richtig verstanden und hingeschrieben habe, bitte ich um Korrektur! Grüße (ganz spezielle an k2-fly;), SolyX Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Alrik Fassbauer Geschrieben 28. Februar 2002 Teilen Geschrieben 28. Februar 2002 The Void ist einfach nur Das Nichts. Mein Traum ist es, einmal folgenden Spruch auf ein T-Shirt zu drucken 8und es dann auch zu tragen) : I am void. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
afoTommy Geschrieben 28. Februar 2002 Teilen Geschrieben 28. Februar 2002 Hi SolyX, tut mir leid, aber ich muss dich korrigieren: Mit Gesicht Stefan = new Gesicht(); Gesicht Klaus = new Gesicht(); Gesicht Mathilda = new Gesicht(); hast du wirklich 3 Objekte, deren Eigenschaften du völlig unabhängig voneinander verändern kannst. Du hast nur 3 Instanzen, der Klasse Gesicht, die sich auch wieder in ihren Eigenschaften unterscheiden können. Gesicht kann z.B mehrere Konstruktoren haben (was, wie du schon gesagt hast Polymorphie ist) und dem entsprechend mit welchem Konstruktor die Klasse instanziert wurde sind die jew. Eigenschaften vorbelegt. Die Eigenschaften der Objekte sind selbständig, die Methoden können trotzdem in allen Instanzen der Klasse verwendet werden (wobei es auch wieder polymorphe Methoden gibt). Was du zum Thema static sagst entspricht auch nicht dem, was ich gelernt habe (kann ja sein, dass ich mich täusche, aber ich glaubs nicht.) static ist nicht für gleichbleibende Variablen (Konstanten) gedacht - dafür wird final verwendet dass static Methoden und Variablen in allen Instanzen der Klasse verwendet werden können ist völlig korrekt. Sie können sogar verwendet werden ohne, dass überhaupt eine Instanz einer Klasse besteht. (wie dein Color.red Beispiel) Nur, dass ich mal wieder meinen Senf dazugeben konnte, ich Angeber :OD Greets Tommy PS: Wenn mich jemand korrigeren will, bitte tun! Wer allerdings nur Rechtschreibfehler findet, darf diese behalten. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Solexa Geschrieben 28. Februar 2002 Teilen Geschrieben 28. Februar 2002 Original geschrieben von afoTommy Hi SolyX, tut mir leid, aber ich muss dich korrigieren: Mit Gesicht Stefan = new Gesicht(); Gesicht Klaus = new Gesicht(); Gesicht Mathilda = new Gesicht(); hast du wirklich 3 Objekte, deren Eigenschaften du völlig unabhängig voneinander verändern kannst. Du hast nur 3 Instanzen, der Klasse Gesicht, die sich auch wieder in ihren Eigenschaften unterscheiden können. wenn Du aber in der Klasse Gesicht irgendwas änderst, dann ändert es sich auch bei Stefan, Klaus und Mathilda, demnach pointen sie nur auf Gesicht. Willst Du das nicht haben, dann gibt es die Methode clone()... mit ihr erzeugst Du wirklich ein neues Objekt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
afoTommy Geschrieben 28. Februar 2002 Teilen Geschrieben 28. Februar 2002 ich glaub, wir reden aneinander vorbei: zur Laufzeit sind die Objekte (Instanzen) absolut unabhängig. Die variablen Eigenschaften von den dreien sind unabhängig, die "final" Eigenschaften, also die Konstanten, sind identisch. Wenn man aber was an der Klasse ändert, und die 3 Objekte neu instanziert, übernehmen Sie natürlich die neuen Eigenschaften. Ein Pointer zeigt immer nur auf ein Objekt, nicht auf eine Klasse. Gesicht Klara = new Gesicht(); Gesicht ZwillingKlara = Klara; Hier hast du zum Beispiel den Pointer von Klara auf ZwillingKlara . Die beiden Objekte sind synchron. Gesicht Stefan = new Gesicht(); Gesicht Klaus = new Gesicht(); Gesicht Mathilda = new Gesicht(); Hier aber hast du 3 asychrone Objekte. Sind wir jetzt auf einem gemeinsamen Nenner? Greets Tommy Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
k2-fly Geschrieben 28. Februar 2002 Teilen Geschrieben 28. Februar 2002 Nein, nein, SolyX hat recht, Angenommen in der Klasse Gesicht gibt es folgende Variable: static Int anzahl_augen; und man macht wieder die drei Fratzen. So wenn ich nun von Mathilda(hiess die so?) die Anzahl der Augen erhöhe(wegen weil zu oft Tschernobyl Urlaub) Dann erhöht sich automatisch auch die Anzahl der Augen bei allen anderen Fratze die Instanzen von Gesicht sind. Eben genau weil Jede Instanz nur einen Pointer auf den Speicherbereich von anzahl_augen hat und nicht eine eigene Variable. Gruß K2-fly Wenn ihr wollt könnt ihr mir mal einen Gefallen tun und auf meine Homepage gehen und mir dann sagen wie lange sie zum laden braucht mitglied.tripod.de/k2fly Danke Ciao PS Was ist denn nun mit den Munich Treffs?? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Solexa Geschrieben 28. Februar 2002 Teilen Geschrieben 28. Februar 2002 Original geschrieben von SolyX Also, nochmal anders... Du hast ein Objekt/Klasse Gesicht gebildet. Mit dem Schlüsselwort new hast Du den folgenden fünf Personen ein Gesicht gegeben : Klara, ZwillingKlara, Stefan, Klaus, Mathilda. Gesicht Stefan = new Gesicht(); Gesicht Klaus = new Gesicht(); Gesicht Mathilda = new Gesicht(); Nun hast Du nicht 6 Objekte, sondern 1 Objekt Gesicht und fünf Namen die auf dieses Gesicht deuten. Änderst Du was bei Gesicht(z.B. die Nasennormalgröße), dann ändert es sich bei den fünf Namen auch. Schwachsinn! Mit dem new Schlüsselwort bilde ich Instanzen und Instanzen sind Objekte. Hier hätten wir also drei Objekte Gesicht und drei Referentyp Variablen: Stefan, Klaus und Mathilda, die eine Referenz auf die Objekte halten Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Solexa Geschrieben 28. Februar 2002 Teilen Geschrieben 28. Februar 2002 Original geschrieben von afoTommy Gesicht Klara = new Gesicht(); Gesicht ZwillingKlara = Klara; Hier hast du zum Beispiel den Pointer von Klara auf ZwillingKlara . Die beiden Objekte sind synchron. die Referenztyp Variable Klara wird der Referenztyp Variablen ZwillingKlara zugewiesen. Somit pointen beide auf das neu erzeugte Objekt Gesicht. Ob sie synchron oder asynchron sind weiß ich nicht, aber es existiert im obigen Beispiel nur ein Objekt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
afoTommy Geschrieben 1. März 2002 Teilen Geschrieben 1. März 2002 richtig. Es ist ein Objekt mit zwei Pointern drauf. und k2-fly: static Int anzahl_augen; Das ist dein Punkt:-) Genau so richtig. Also, können wir vielleicht damit schließen: (?) Beispiel: public class Gesicht { public int Nasen; public static boolean Mund = true; public final static int Ohren = 2; } public static void main() { Gesicht Klara = new Gesicht(); Gesicht KlarasSchwester = Klara; Gesicht Toni = new Gesicht(); } Text dazu: Wenn die Eigenschaft "Nasen" des Objekts "Toni" geändert wird, bleibt die Eigenschaft "Nasen" bei Klara und KlarasSchwester davon unberührt. Die Eigenschaften haben getrennte Speicherbereiche. Ändere ich die Eigenschaft "Mund" auf "false", ändert sich die Eigenschaft bei Klara, KlarasSchwester und bei Toni, da die beiden Objekte diese Eigenschaft im selben Speicherberich ablegen und darauf zugreifen. KlarasSchwester ist ja sowieso nur ein Pointer auf Klara und hat deshalb auch in jedem Fall die gleichen Eigenschaften wie Klara. Versuche ich die Eigenschaft "Ohren" zu ändern, wird mir das nicht gelingen, weil das Schlüsselwort 'final' die Eigenschaft einmal mit einem Wert belegt, der nie überschrieben werden kann. Somit haben Klara, ihre Schwester und toni alle 2 Ohren. Hat noch jemand Einwände? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Solexa Geschrieben 5. März 2002 Teilen Geschrieben 5. März 2002 Hallo, nope..., erstmal hab ich nichts weiter einzuwenden *g*. Was ist denn nun eigentlich mit void, soweit ich weiß und wie oben geschrieben steht..., daß es kein Rückgabewert hat. Sonst noch was? Hab hier noch zwei Links: einen groben Überblick und noch eine Einführung Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Solexa Geschrieben 5. März 2002 Teilen Geschrieben 5. März 2002 Original geschrieben von Alrik Fassbauer The Void ist einfach nur Das Nichts. naja, ein bisserl ist schon was da (: void Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.