/* Polymorphie bei Java */
// dynamische Bindung in Java
// wjh 2000

// Basisklasse 
class base
{
void ausgabe()
{
System.out.println("Hier ist die Basis");
}
}

// Abgeleitete Klasse mit überlagerter Ausgabemethode
class c1 extends base
{
int c1 = 77;
void ausgabe ()
{
System.out.println ("Bin bei der Klasse c1");
}
}

// Abgeleitete Klasse mit überlagerter Ausgabemethode
class c2 extends base
{
int c2 = 77;
void ausgabe ()
{
System.out.println ("Bin bei der Klasse c2");
}
}

// Abgeleitete Klasse mit überlagerter Ausgabemethode
class c3 extends base
{
int c3 = 77;
void ausgabe ()
{
System.out.println ("Bin bei der Klasse c3");
}
}

// Hauptklasse
class polymorph
{
public static void main (String[]  args)
{
base b;
System.out.println("Beginn des Polymorphie Beispiels");
// c1,c2,c3 sind Referenzen !
c1 c1var = new c1();
c2 c2var = new c2();
c3 c3var = new c3();

// Zuweisung an Basisklassenvariable
// Ausgaben verhalten sich polymorph, es wird nie die Ausgabe der Basismethode benutzt
b = c1var;
b.ausgabe();
b = c2var;
b.ausgabe();
b = c3var;
b.ausgabe();
}

}
