Zum Inhalt springen

Newbie sucht Hilfe


bytes

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?:rolleyes:

Greets

Tommy

Link zu diesem Kommentar
Auf anderen Seiten teilen

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??

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...