Java Anfänger

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Java Anfänger

    Hi Leute,

    beschäftige mich seit einigen Tagen mit Java und ich verstehe das einfach nicht mit der Sichtbarkeit bei static.
    Das habe ich aus nem online Tutorial:

    Variablen und Methoden mit dem Attribut static sind nicht an die Existenz eines konkreten Objekts gebunden, sondern existieren vom Laden der Klasse bis zum Beenden des Programms. Das static-Attribut beeinflußt bei Instanzmerkmalen ihre Lebensdauer und erlaubt bei Methoden den Aufruf, ohne daß der Aufrufer ein Objekt der Klasse besitzt, in der die Methode definiert wurde.

    Der größte Teil davon ist mir klar nur wie meinen die das mit:
    und erlaubt bei Methoden den Aufruf, ohne daß der Aufrufer ....

    Danke schon im vorraus!!

  • #2
    Hallo,

    Normal rufst du die Objekte ja so auf:

    Object Name = new Object();
    int vari = Object.Methode()

    Bei static kannst du das Object weglassen:

    int vari = Methode()

    mfg
    Zuletzt geändert von Blackgreetz; 12.06.2008, 00:36.

    Kommentar


    • #3
      Das kenne ich aber anders.

      Object foo = new Object();
      foo.Method();

      vs.

      Object.Method();


      Static ist zum Beispiel der ganze Kram in Math und System, deswegen kannst du schreiben System.out.println() und Math.round(). Wenn es nicht static wäre, müßtest du erst eine Instanz erzeugen - das wär richtig nervig.
      Zuletzt geändert von onemorenerd; 12.06.2008, 02:29.

      Kommentar


      • #4
        Re: Java Anfänger

        Der größte Teil davon ist mir klar nur wie meinen die das mit:
        und erlaubt bei Methoden den Aufruf, ohne daß der Aufrufer ....
        Normalerweise wird eine Methode immer im Kontext einer Instanz ausgeführt. Da statische Methoden aber an kein Objekt, sondern lediglich an die Klasse gebunden sind, kannst du diese direkt aufrufen, wie onemorenerd auch bereits gezeigt habt (Blackgreetz Beispiel passt so nicht!)

        Kommentar


        • #5
          Original geschrieben von Blackgreetz
          Hallo,

          Normal rufst du die Objekte ja so auf:

          Object Name = new Object();
          int vari = Object.Methode()

          Bei static kannst du das Object weglassen:

          int vari = Methode()

          mfg
          Das ist falsch!

          int vari = Methode() => Methode von welcher Klasse? Und wenn 2 Klassen die gleichen Methodennamen haben, dann stürzt das Programm ab oder wie?

          Die Erklärung von onemorenerd ist absolut korrekt!

          Kommentar


          • #6
            Zitat von onemorenerd Beitrag anzeigen
            Das kenne ich aber anders.

            Object foo = new Object();
            foo.Method();

            vs.

            Object.Method();


            Static ist zum Beispiel der ganze Kram in Math und System, deswegen kannst du schreiben System.out.println() und Math.round(). Wenn es nicht static wäre, müßtest du erst eine Instanz erzeugen - das wär richtig nervig.
            Ich kenn das allerdings ein bisschen anders...

            objektorientiert

            Code:
            Object obj = new Object();
            obj.Method();
            vs klassenorientiert

            Code:
            Class.Method();
            Bei statischen Methoden spricht man die Klasse und kein Objekt an (statisch = außerhalb des Objektkontexts). Vielleicht war das auch nur ein Schreibfehler von dir.

            Zu deinem unvollendeten Satz:

            und erlaubt bei Methoden den Aufruf, ohne daß der Aufrufer .... [COLOR=Red]ein konkretes Objekt ist.

            [COLOR=Black]Ups, 2 Jahre zu spät [/COLOR]
            [/COLOR]

            Kommentar


            • #7
              Anyone bekommt einen Orden für das Ausgraben uralter Threads und für die „Korrektur“ von onemorenerds korrektem Code, die eigentlich genauso aussieht.
              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
              Super, danke!
              [/COLOR]

              Kommentar


              • #8
                Zitat von AmicaNoctis Beitrag anzeigen
                Anyone bekommt einen Orden für das Ausgraben uralter Threads und für die „Korrektur“ von onemorenerds korrektem Code, die eigentlich genauso aussieht.
                Ja, wie gesagt. Vielleicht hat er sich auch verschrieben, weil Object.Method ist zwar syntaktisch richtig, aber vom Sinn her vollkommen falsch. Und das mit dem alten Thema habe ich leider erst zu spät gesehen.

                Kommentar


                • #9
                  Zitat von Anyone Beitrag anzeigen
                  Object.Method ist zwar syntaktisch richtig, aber vom Sinn her vollkommen falsch
                  Wenn die Klasse aber nun so heißt und trotzdem statische Methoden hat…

                  Ich werd dann mal meine ehemalige Lehrerin anrufen und ihr sagen, dass sie „vom Sinn her vollkommen falsch“ ist. Die heißt nämlich Wolf.
                  [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                  Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                  Super, danke!
                  [/COLOR]

                  Kommentar


                  • #10
                    Zitat von AmicaNoctis Beitrag anzeigen
                    Wenn die Klasse aber nun so heißt und trotzdem statische Methoden hat…

                    Ich werd dann mal meine ehemalige Lehrerin anrufen und ihr sagen, dass sie „vom Sinn her vollkommen falsch“ ist. Die heißt nämlich Wolf.
                    Damn, du hast natürlich vollkommen recht. Habe die Klasse Object an sich vollkommen vergessen. Okay, vergesst einfach alles was ich gesagt habe.

                    Kommentar

                    Lädt...
                    X