//: polymorphism/Forg.java//cleanup an inheritance
packageobject;import static net.mindview.util.Print.*;classCharacteristic{privateString s;
Characteristic(String s)
{this.s =s;
print("Creating Characteristic " +s);
}protected voiddispose()
{
print("disposing characteristic " +s);
}
}classDescription{privateString s;
Description(String s)
{this.s =s;
print("Creating Description " +s);
}protected voiddispose()
{
print("disposing description" +s);
}
}classLivingCreature{private Characteristic p =
new Characteristic("is alive");private Description t =
new Description("Basic living creature");
LivingCreature()
{
print("livingcreature");
}protected voiddispose()
{
print("livingCreature dispose");
t.dispose();
p.dispose();
}
}class Animal extendsLivingCreature{private Characteristic p =
new Characteristic("has heart");private Description t =
new Description("animal not vegetalbe");
Animal(){print("Animal()");}protected voiddispose()
{
print("Animal dispose");
t.dispose();
p.dispose();super.dispose();
}
}class Amphibian extendsAnimal
{private Characteristic p =
new Characteristic("can live in water");private Description t =
new Description("Both water an land");
Amphibian()
{
print("Amphibian()");
}protected voiddispose()
{
print("Amphibian dispose");
t.dispose();
p.dispose();super.dispose();
}
}public class Frog extendsAmphibian{private Characteristic p = new Characteristic("Croaks");private Description t = new Description("Eats bugs");publicFrog()
{
print("Forg()");
t.dispose();
p.dispose();super.dispose();
}public static voidmain(String[] args)
{
Frog frog= newFrog();
print("bye!");
frog.dispose();
}
}/*output: 消费的顺序和初始化的顺序相反
Creating Characteristic is alive
Creating Description Basic living creature
livingcreature
Creating Characteristic has heart
Creating Description animal not vegetalbe
Animal()
Creating Characteristic can live in water
Creating Description Both water an land
Amphibian()
Creating Characteristic Croaks
Creating Description Eats bugs
Forg()
disposing descriptionEats bugs
disposing characteristic Croaks
Amphibian dispose
disposing descriptionBoth water an land
disposing characteristic can live in water
Animal dispose
disposing descriptionanimal not vegetalbe
disposing characteristic has heart
livingCreature dispose
disposing descriptionBasic living creature
disposing characteristic is alive
bye!
Amphibian dispose
disposing descriptionBoth water an land
disposing characteristic can live in water
Animal dispose
disposing descriptionanimal not vegetalbe
disposing characteristic has heart
livingCreature dispose
disposing descriptionBasic living creature
disposing characteristic is alive*///~