// ----- 1, 2 Klärt die Reihenfolge der Initialisierung bei Vererbung ----- \\
public class StaticDemo
{
public static void main(String[] args)
{
StaticChild sc = new StaticChild();
}
}
class StaticParent
{
public StaticParent()
{
System.out.println("StaticParent()");
}
}
class StaticChild extends StaticParent
{
// statischer Konstruktor
static
{
System.out.println("static initializer in StaticChild");
}
// anonymer Konstruktor
{
System.out.println("anonymous initializer in StaticChild");
}
// DefaultKonstruktor
public StaticChild()
{
System.out.println("StaticChild()");
}
} // end class StaticChild
Das Programm macht die folgende Ausgabe
static initializer in StaticChild
StaticParent()
anonymous initializer in StaticChild
StaticChild()
// ----- 3 Klärt die Reihenfolge der Initialisierung bei Vererbung ----- \\
public class StaticDemo3
{
public static void main(String[] args)
{
StaticChild s1 = new StaticChild();
}
}
class StaticParent
{
public StaticParent()
{
System.out.println("StaticParent()");
}
// statischer Konstruktor
static
{
System.out.println("static initializer in StaticParent");
}
}
class StaticChild extends StaticParent
{
// statischer Konstruktor
static
{
System.out.println("static initializer in StaticChild");
}
// anonymer Konstruktor
{
System.out.println("anonymous initializer in StaticChild");
}
// Defaultkonstruktor
public StaticChild()
{
System.out.println("StaticChild()");
}
public static void staticMethod()
{
System.out.println("staticMethod()");
}
} // end class StaticChild
Das Programm macht die folgende Ausgabe
static initializer in StaticParent
static initializer in StaticChild
StaticParent()
anonymous initializer in StaticChild
StaticChild()
Folgerung
Statische Daten werden vor der Instantiierung des ersten Objekts angelegt.