Polymorphismus

DennisXX

Bekanntes Mitglied
Hallo !

Polymorphismus erlaubt es Klassen, Eigenschaften zur Laufzeit zu verändern

ich versteh nicht ganz, wie genau das in Bezug auf die Polymorphie gemeint ist. Ich kenne lediglich den instanceof Operator und weiß, dasss man über diesen an die Member-Variablen und Membermethode der darunterliegenden Klassen zugreifen zu können.

Kann mir das vielleicht ejmand kurz erläutern?

mfg
Dennis
 
Zuletzt bearbeitet von einem Moderator:

HimBromBeere

Top Contributor
Das heißt nur soviel, wie, dass erst zur Laufzeit bekannt sein muss, welchen genauen Datentyp deine Objekte haben (Nutzung von Interfaces). Ändern kannst du die Methoden nicht, was einmal geschrieben wurde, bleibt auch erstmal so. Es beudeutet also nichts weiter, als dass zwei Klassen das selbe Interface implementieren, die Umsetzung der Methoden aber völlig unterschiedlich sein kann (z.B. berechnet sich der Flächeninhalt eines Dreiecks anders als bei einem Rechteck, beide kennen aber über das Interface Geometrie die Methode berechneFlaeche()).
EDIT: Du musst also erst zur Laufzeit sagen, wie deine konkreten Methoden tatsächlich aussehen, zur Compile-Zeit reicht es völlig zu wissen, welche Methiden ein Interface bereitsstellt.
 
Zuletzt bearbeitet:
A

Andgalf

Gast
Ich kenne lediglich den instanceof Operator und weiß, dasss man über diesen an die Member-Variablen und Membermethode der darunterliegenden Klassen zugreifen zu können.

Wie bitte ???

[EDIT]
Ok, nehme mal an du hast hier extrem unpräzise formuliert und einen Teil deiner Gedanken einfach weggelassen
[/EDIT]
 
Zuletzt bearbeitet von einem Moderator:
G

Gast2

Gast
Wenn du irgendwo ne Variable vom Typ List hast kann da zur Laufzeit ne ArrayList hinterstecken, kurze Zeit später wirds dann vllt in ne LinkedList geändert.
 

Landei

Top Contributor
"Polymorphismus" ist ein extrem überladener Begriff. Er kann bedeuten, dass eine Methode [c]blub(Number x)[/c] mit
Code:
Double
s oder
Code:
Integer
s gefüttert werden darf, und das
Code:
+
sowohl für Zahlen wie auch Strings funktioneirt. Er kann sich auf Typ-Polymorphismus erster Stufe (für den z.B. Generics oder C++-Template mögliche Implementierungen sind) beziehen. Er kann sich auf Typ-Polymorphismus höherer Stufe beziehen, den es in Java nicht gibt:

Java:
//Scala
trait Functor[F[_]] {
  def map[A,B] (fn: A=>B, fa: F[A]): F[B]
}

//fiktive Übersetzung in Java. Der konkrete Typ von F würde dabei erst zur Laufzeit festgelegt
interface Functor<F<_>> {
  public <A,B> F<B> map(Function<A,B> fn, F<A> fa);
}

Und vieles mehr: Polymorphie (Programmierung) ? Wikipedia

Wobei ich das Gefühl habe, dass die Wkianer da noch ein paar Versionen vergessen haben. Typklassen in Haskell, haben zwar einige Ähnlichkeiten mit generischen Interfaces (vielleicht sogar mehr mit Extensions-Methoden) unterscheiden sich aber in der Umsetzung schon erheblich, stellen also meiner Meinung nach eine eigene Art Polymorphismus dar.
 
Zuletzt bearbeitet:

Ähnliche Java Themen

Neue Themen


Oben