public class Polymorphie { public static void main(String[] args) { Tier t = new Tier(); System.out.println(t.wasBinIch()); Pinguin p = new Pinguin(); System.out.println(p.wasBinIch()); // Das geht; man kann einer Variablen vom Typ der Basisklasse ein // "größeres", abgeleitetes Objekt zuweisen. Tier tp = new Pinguin(); System.out.println(tp.wasBinIch()); // Geht nicht, da in der Klasse "Tier" keine fluegelform enthalten ist. tp.fluegelform = "krumm"; // Folgendes geht nicht, dann Pinguin enthält mehr Variablen als Tier, // und diese würden mit new Tier() gar nicht berücksichtigt. Der Compiler // bricht mit einer Fehlermeldung ab. // Pinguin pt = new Tier(); // System.out.println(pt.wasBinIch()); } } class Tier { String farbe; int groesse; public String wasBinIch() { return "Ich weiß noch nicht, was ich mal werde."; } } class Pinguin extends Tier { String fluegelform; public String wasBinIch() { return "Ich bin ein Pinguin."; } } class Giraffe extends Tier { public String wasBinIch() { return "Ich bin eine Giraffe."; } }