Der Polymorphismus funktioniert in Java nicht im Fall von überschriebenen Attributen die einen unterschiedlichen Typ besitzen.
Bei überschriebenen Attributen wendet Java den Typ der Referenz an um das Attribut zu bestimmen.
Im Beispiel der Klassen Point und CircleIsPoint wird dies mit Hilfe des Attributs price gezeigt:
Klasse Point
public class Point {
...
public double price = 100.1;
...
public void print() {System.out.println(toString());}
public String toString() {return ("x: " + x + " y: " + y);}
}Klasse CircleIsPoint
public class CircleIsPoint extends Point{
...
public int price = 99;
...
public void print() {
System.out.println(super.toString() + " radius: " + radius);
}
}Hauptprogramm
public class Main {
public static void main(String[] args) {
Point[] pf = new Point[3];
pf[0] = new Point (2.2, 3.3);
pf[1] = new Point (2.22, 3.33);
pf[2] = new CircleIsPoint(4.4,5.5,6.6);
pf[0].print();
pf[1].print();
pf[2].print();
Point p2 = pf[2];
p2.print(); // toString von CircleIsPoint wird benutzt
double t1 = 1000.0 + p2.price; // price von Point wird benutzt
System.out.println(t1);
CircleIsPoint cip = (CircleIsPoint)pf[2];
cip.print(); // toString von CircleIsPoint wird benutzt
double t2 = 1000.0 + cip.price; // price von CircleIsPoint wird benutzt
System.out.println(t2);
}
}Hiermit ergeben sich die folgenden Belegungen:

Konsolenausgabe
x: 2.2 y: 3.3 x: 2.22 y: 3.33 x: 4.4 y: 5.5 radius: 6.6 x: 4.4 y: 5.5 radius: 6.6 1100.1 x: 4.4 y: 5.5 radius: 6.6 1099.0
Im ersten Fall (p2) wird das Attribut price vom Typ double benutzt. Im Fall der Variable cip vom Typ CircleIsPoint wird die Variable price vom Typ int benutzt.
Es kommt kein Polymorphismus zum Tragen, die Auswahl des Attributs richtet sich nach dem Typ der Referenz!
Tipp: Durch das strikte Anwenden von Datenkapselung greift man nur noch über Zugriffsmethoden auf Attribute zu. Hierdurch wird der Polymorphismus auch beim Zugriff auf Attribute (intuitiv) gewährleistet. Das Ausnutzen des nicht polymorphen Verhalten betrifft dann nur noch Sonderfälle in denen man dies explizit wünscht.
