Announcement

Collapse
No announcement yet.

Erzeugen einer Klasse aus der Klassenbibliothek

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Erzeugen einer Klasse aus der Klassenbibliothek

    hallo,
    ich arbeite mich gerade durch das Buch 'Java ist auch eine Insel'. Und da stoße ich auf ein Verständnisproblem:
    im Absatz '3.4.1 Ein Exemplar einer Klasse mit dem new-Operator anlegen' wird eine Klasse (Point) aus der Standartbibliothek benutzt.
    Meine Frage: ich gehe mal davon aus dass man diese Klasse nicht überschreiben bzw. verändern darf/kann. Also müßte man eine eigene abgeleitete Klasse erzeugen, die dann einen anderen Namen erhalten muß. In dem Beispiel wird aber der in der Standartbibliothek verwendet:
    Code:
    new java.awt.Point();
    . Sehe ich das falsch?
    was mich dann weiter verwirrt: unter Punkt 3.4.3 steht dann:
    Deklariere die Variable p vom Typ java.awt.Point. Die Variable p nimmt anschließend die Referenz von dem neuen Objekt auf, das mit new angelegt wurde.
    Code:
    java.awt.Point p;
    p = new java.awt.Point();
    Zeile 1 deute ich so: abgeleitete neue Klasse p von java.awt.Point
    Zeile 2: neues Objekt p (mit dem gleichen Namen wie in Zeile 1?) von Klasse p?
    Zuletzt editiert von paul1234; 16.06.2015, 08:49.

  • #2
    In dem Beispiel (ich kenne das nicht) wird die Klasse offenbar so genutzt, wie sie angeboten wird. Ein überschreiben ist da zurzeit wohl nicht gewollt. Würdest du ein überschreiben wollen, müsstest du eine neue Klasse anlegen, die von Point erbt
    public class MyPoint extends Point
    (Ausnahme anonyme Klassen)
    Christian

    Comment


    • #3
      Hallo Christian,
      was ist aber mit dem Code bzw. meinen Bemerkungen dazu unter Punkt 3.4.3?

      Comment


      • #4
        Hallo,

        das Thema Vererbung und abgeleitete Klassen wird in dem genannten Buch in Kapitel 5.8.x abgehandelt und ist am Stichwort "extends" zu erkennen. Das "p" ist ein Objekt der Klasse "java.awt.Point".
        MfG
        Cheat-Sheets for Developers / Programming Quotes

        Comment


        • #5
          3.4.3 ist die Declaration von Variablen
          Da steht nichts von erben, ableiten oder überschreiben.
          Und wenn ich die Klasse Point benutzen will, dann declariere ich das so wie da beschrieben.
          Wenn du Vererbung benutzen willst, musst du ableiten -> Beitrag #2
          Zuletzt editiert von Christian Marquardt; 16.06.2015, 10:22.
          Christian

          Comment


          • #6
            hm, ich denke, ich habe mein Verständnisproblem nicht richtig rüber gebracht. So wie ich das bisher kenne:
            1. Klasse definieren
            2. Objekt definieren u. deklarieren
            3. Prozeduren u. Funktionen für das Objekt definieren u. deklarieren
            ist dieser zeitliche Ablauf bei Java anders? An welcher stelle definiere ich namentlich ein Objekt?
            Das hier eine Referenz zur Speicherreservierung für das Objekt gemacht wird bzw. gemacht werden muß, ist mir schon klar. Aber was ist mit meinem 2.Punkt? Referenz u. Objekt sind doch 2 verschiedene Sachen

            Comment


            • #7
              In Java gibt es nur Referenzen.
              Insofern ist
              Point mypoint=new Point();
              oder einzeln
              Point mypoint; Objekt anlegen
              mypoint=new Point(); Speicher anfordern
              alles.

              mypoint.x=300;

              1. entfällt, du benutzt ja die Pointklasse aus JavaSE
              2. Point mypoint=new Point();
              3. nur bei eigenen oder abgeleiteten Klassen

              Das von dir zitierte Kapitel erklärt nur das anlegen eines Objektes und nicht mehr.
              Du must doch unterscheiden,ob du eine eigene Klasse entwirfst oder eine fertige Klasse benutzt.
              Im ersteren Fall wirst du doch die Klasse mit entsprechenden Methoden usw. ausstatten.
              In zweiten Fall wirst du doch die Klasse nur benutzen, wenn sie ungefähr das macht was du gerade brauchst.
              Macht sie alles was du brauchst, benutzt du sie im "Original". Benötigst du Änderungen, leitest du ab und überschreibst und
              ergänzt.

              Da das nichts mit Eclipse zu tun hat -> verschoben
              Zuletzt editiert von Christian Marquardt; 16.06.2015, 18:52.
              Christian

              Comment


              • #8
                ok, ich denke mal ich hab's begriffen. auch wenn der ursprüngliche Threadtitel nicht optimal gewählt wurde. Oder ich hätte dann irgend wann einen neuen Thread mit dem Titel 'Erschaffung + Benutzung von Objekten' aufmachen müssen.
                mit gerafft meine ich:
                ¹.
                Code:
                ClassA xyz
                //definiert ein Objekt (eine Ableitung von Klasse 'ClassA' mit dem Namen 'xyz'
                2.
                Code:
                ClassA xyz = new ClassA();
                //hier wird aus dem Objekt eine Refernzvariable, die auf den Speicherort der Daten, die das Objekt erhält, zeigt
                ist das so jetzt ok? Und sind euch Situationen bekannt, in denen es zwar zur Ableitung eines Objektes (1.), aber nicht zur Initialisierung der Referenzvariablen (2.) kommt?
                Gruß paul!

                Comment


                • #9
                  Originally posted by paul1234 View Post
                  ... Und sind euch Situationen bekannt, in denen es zwar zur Ableitung eines Objektes (1.), aber nicht zur Initialisierung der Referenzvariablen (2.) kommt?
                  Gruß paul!
                  Das sind doch zwei grundverschiedene Szenarien die man gar nicht miteinander vergleichen kann. Wenn Du z.B. eine Bibliothek für jemand anderes baust kann es durchaus sein dass Du von einer Klasse ableitest um eine andere zu erzeugen. Diese wird dann vielleicht nur von den Benutzern der Bibliothek instanziiert, nicht aber von Dir selbt.

                  Comment


                  • #10
                    Und sind euch Situationen bekannt, in denen es zwar zur Ableitung eines Objektes (1.), aber nicht zur Initialisierung der Referenzvariablen (2.) kommt?
                    In welcher Sprache macht das wann irgendeinen Sinn?
                    Christian

                    Comment


                    • #11
                      also auch wenn ich hier total nerve, ist es mir immer noch nicht klar, wie der Namensunterschied am verlinkten Beispiel zwischen Objektnamen u.Referenzvariable-Namen lautet: https://www.teialehrbuch.de/Kostenlo...variablen.html
                      class Konto -> Konto ist die Klasse
                      Konto konto1 = new Konto();
                      Konto konto2 = new Konto();
                      konto1 + konto2 ist der Name von Objekten oder Referenzvariablen?
                      Kann das die Antwort sein?: Objekte haben keinen eigenen Namen. Sie können nur über die Referenzvariable angesprochen werden, in dem Fall konto1 bzw. konto2
                      Zuletzt editiert von paul1234; 20.06.2015, 08:02.

                      Comment


                      • #12
                        Objekte haben keinen eigenen Namen.
                        Doch, konto1 und konto2
                        Sie können nur über die Referenzvariable angesprochen werden, in dem Fall konto1 bzw. konto2
                        Wie schon gesagt gibt es in Java nur Referenzen -> hier konto1 und konto2.
                        Das Object heißt konto1 und ist eine Referenz auf die Instanz einer Klasse Konto
                        Christian

                        Comment


                        • #13
                          also ist der Objektname gleich dem Namen der Refernzvariablen

                          Comment


                          • #14
                            Es gibt in Java keine (extra) Referenzvariablen.

                            Es kann dir in Java völlig schnurz sein, was das ist....erstmal.

                            Leite von einer Klasse ab und arbeite damit
                            Zuletzt editiert von Christian Marquardt; 20.06.2015, 16:58.
                            Christian

                            Comment


                            • #15
                              Naja aber ich glaube es herrscht noch Verwirrung. Ich würde sagen die Objekte selbst haben keine Namen. Sobald keine Referenz, welche einen Namen haben, darauf zeigt wird diese aus dem Speicher entfernt (das ist jetzt vermutlich etwas vereinfacht und ich kenne mich mit der Garbage Collection nicht wirklich aus, aber ich denke für das Grundverständnis verhält es sich so).

                              Beispiel:
                              Code:
                              Konto konto1 = new Konto(); // erzeugen einer neuen Instanz der Klasse Konto und Zuweisung zur (Referenz-)Variablen konto1
                              Konto konto2 = konto1; // erzeugen einer Referenzvariablen konto2, danach Zuweisung des Objekts hinter konto1 zu konto2
                              In dem Beispiel sieht man das dahinter dasselbe Objekte liegt, aber danach 2 verschiedene Referenzen darauf zeigen. Das instanziierte Objekt an sich hat deswegen keinen Namen.

                              Comment

                              Working...
                              X