public class Test {
public class Basis {
public Basis() {
System.out.println( " Basis-c'tor: getString1() -> " + getString1());
System.out.println( " Basis-c'tor: getString2() -> " + getString2());
}
public String getString1() {
return "X1 aus " + getClass().getName();
}
public String getString2() {
return "X2 aus " + getClass().getName();
}
}
public class Abgeleitet extends Basis {
public Abgeleitet() {
super();
System.out.println( " Abgeleitet-c'tor: getString1() -> " + getString1());
System.out.println( " Abgeleitet-c'tor: getString2() -> " + getString2());
System.out.println( " Abgeleitet-c'tor: getString3() -> " + getString3());
}
/*
* Hier wird die Methode aus der Basisklasse überschrieben
*/
public String getString2() {
return "Y2 aus " + getClass().getName();
}
/*
* Diese Methode gibt es in der Basisklasse nicht
*/
public String getString3() {
return "Y3 aus " + getClass().getName();
}
}
public Test() {
System.out.println( "\nErzeuge Basis o1:");
Basis o1 = new Basis();
System.out.println( "\nErzeuge Abgeleitet o2:");
Abgeleitet o2 = new Abgeleitet();
System.out.println( "\nErzeuge Abgeleitet o3:");
Basis o3 = new Abgeleitet(); //--- Abgeleitet ist Spezialform von Basis und kann daher zugewiesen werden
System.out.println( "\nCaste Basis o3 auf Abgeleitet o4:");
Abgeleitet o4 = (Abgeleitet)o3; //--- expliziter Cast erforderlich
//System.out.println( "\nErzeuge Basis o5:");
//Abgeleitet o5 = new Basis(); //--- Compile-Fehler: incompatible types, found Test.Basis, required Test.Abgeleitet
System.out.println();
System.out.println( "o1.getString1(): " + o1.getString1());
System.out.println( "o1.getString2(): " + o1.getString2());
//System.out.println( "o1.getString3(): " + o1.getString3()); //--- Compile-Fehler: cannot find symbol method getString3(), location class Test.Basis
System.out.println();
System.out.println( "o2.getString1(): " + o2.getString1());
System.out.println( "o2.getString2(): " + o2.getString2());
System.out.println( "o2.getString3(): " + o2.getString3());
System.out.println();
System.out.println( "o3.getString1(): " + o3.getString1());
System.out.println( "o3.getString2(): " + o3.getString2());
//System.out.println( "o3.getString3(): " + o3.getString3()); //--- Compile-Fehler: cannot find symbol method getString3(), location class Test.Basis
System.out.println();
System.out.println( "o4.getString1(): " + o4.getString1());
System.out.println( "o4.getString2(): " + o4.getString2());
System.out.println( "o4.getString3(): " + o4.getString3());
}
public static void main( String[] args) {
new Test();
}
}