algore2001: Polymorphie in Java - richtige Aussage?

Hallo,

hab gerade folgenden Satz im Skript gefunden, der glaub ich falsch ist. Bevor ich den Prof. auf den Fehler aufmerksam mache, wollte ich kurz fragen ob es tatsächlich falsch ist:

"Hat in einer Methode ein Parameter den Typ einer Klasse, so dürfen auch Referenzen auf Väter dieser Klasse übergeben werden."

Müsste es nicht Referenzen auf Söhne heißen?

Danke und Schönen Tourstart!
Bene

  1. Hallo,

    hab gerade folgenden Satz im Skript gefunden, der glaub ich falsch ist. Bevor ich den Prof. auf den Fehler aufmerksam mache, wollte ich kurz fragen ob es tatsächlich falsch ist:

    "Hat in einer Methode ein Parameter den Typ einer Klasse, so dürfen auch Referenzen auf Väter dieser Klasse übergeben werden."

    Müsste es nicht Referenzen auf Söhne heißen?

    Danke und Schönen Tourstart!
    Bene

    Wenn es um eine Vorlesung um Objektorientierung (in ihrer reinsten Form handelt),
    dann liegt ihr beide (dein Professor und auch du) falsch:

    Parameter einer Methode haben keine Typbindung, daher ist es völlig egal, was für eine Klasse ein Objekt ist, es muß grundsätzlich klappen.

    Eine solche reine objektorientierte Sprache ist zB. Smalltalk.
    Die einzige Gefahr ist, daß innerhalb der Methode dann eine Eigenschaft oder Methode dieses Parameters verwendet wird, die diese Klasse nicht implementiert hat.

    ---

    Nun zu so Pseudo-Objektorientierten Sachen wie C++ und Java:
    Da bin ich jetzt auch etwas unsicher - pseudo ist halt wieder Auslegungssache (ich kann eher für C++ sprechen).

    Rein aus der Technik der Kompilierung (von C++) weiß ich, daß alle Klassen sogenannte V-Tables (in denen eine Übersicht über alle Methoden und Instanzen gespeichert sind) haben, und diese V-Tables für die Kompilierung aufgelöst werden.
    Theoretisch dürften alle abgeleiteten Klassen (Söhne) daher sauber durchlaufen, weil wenn sie eine Methode selbst nicht implementiert haben, dann hat es die übergeordete Klasse.
    Auch vom praktischen Nutzen her denke ich mal, daß du recht hast.

    Warum probierst du es nicht einfach mal aus ?

    1. Hallo flashnfantasy,

      "Hat in einer Methode ein Parameter den Typ einer Klasse, so dürfen auch Referenzen auf Väter dieser Klasse übergeben werden."
      Müsste es nicht Referenzen auf Söhne heißen?

      Ja, müsste es. Man kann der Methode Objekte übergeben, die mehr "können", aber nicht welche, die weniger "können". Das würde dem Zweck von Typisierung ja widersprechen.

      Parameter einer Methode haben keine Typbindung, daher ist es völlig egal, was für eine Klasse ein Objekt ist, es muß grundsätzlich klappen.

      Polymorphie und Typisierung sind keine der Objektorientierung widersprechende Konzepte. Abgesehen davon hat er ja geschrieben, dass es um Java geht.

      Grüße

      Daniel

      1. Hallo,

        danke für eure Hilfe.
        Dann werde ich den Prof. mal auf seinen Fehler aufmerksam machen.

        Viele Grüße
        Bene