115 lines
2.6 KiB
Java
115 lines
2.6 KiB
Java
|
//: polymorphism/Frog.java
|
||
|
// Cleanup and inheritance.
|
||
|
package polymorphism;
|
||
|
import static net.mindview.util.Print.*;
|
||
|
|
||
|
class Characteristic {
|
||
|
private String s;
|
||
|
Characteristic(String s) {
|
||
|
this.s = s;
|
||
|
print("Creating Characteristic " + s);
|
||
|
}
|
||
|
protected void dispose() {
|
||
|
print("disposing Characteristic " + s);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class Description {
|
||
|
private String s;
|
||
|
Description(String s) {
|
||
|
this.s = s;
|
||
|
print("Creating Description " + s);
|
||
|
}
|
||
|
protected void dispose() {
|
||
|
print("disposing Description " + s);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class LivingCreature {
|
||
|
private Characteristic p =
|
||
|
new Characteristic("is alive");
|
||
|
private Description t =
|
||
|
new Description("Basic Living Creature");
|
||
|
LivingCreature() {
|
||
|
print("LivingCreature()");
|
||
|
}
|
||
|
protected void dispose() {
|
||
|
print("LivingCreature dispose");
|
||
|
t.dispose();
|
||
|
p.dispose();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class Animal extends LivingCreature {
|
||
|
private Characteristic p =
|
||
|
new Characteristic("has heart");
|
||
|
private Description t =
|
||
|
new Description("Animal not Vegetable");
|
||
|
Animal() { print("Animal()"); }
|
||
|
protected void dispose() {
|
||
|
print("Animal dispose");
|
||
|
t.dispose();
|
||
|
p.dispose();
|
||
|
super.dispose();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class Amphibian extends Animal {
|
||
|
private Characteristic p =
|
||
|
new Characteristic("can live in water");
|
||
|
private Description t =
|
||
|
new Description("Both water and land");
|
||
|
Amphibian() {
|
||
|
print("Amphibian()");
|
||
|
}
|
||
|
protected void dispose() {
|
||
|
print("Amphibian dispose");
|
||
|
t.dispose();
|
||
|
p.dispose();
|
||
|
super.dispose();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public class Frog extends Amphibian {
|
||
|
private Characteristic p = new Characteristic("Croaks");
|
||
|
private Description t = new Description("Eats Bugs");
|
||
|
public Frog() { print("Frog()"); }
|
||
|
protected void dispose() {
|
||
|
print("Frog dispose");
|
||
|
t.dispose();
|
||
|
p.dispose();
|
||
|
super.dispose();
|
||
|
}
|
||
|
public static void main(String[] args) {
|
||
|
Frog frog = new Frog();
|
||
|
print("Bye!");
|
||
|
frog.dispose();
|
||
|
}
|
||
|
} /* Output:
|
||
|
Creating Characteristic is alive
|
||
|
Creating Description Basic Living Creature
|
||
|
LivingCreature()
|
||
|
Creating Characteristic has heart
|
||
|
Creating Description Animal not Vegetable
|
||
|
Animal()
|
||
|
Creating Characteristic can live in water
|
||
|
Creating Description Both water and land
|
||
|
Amphibian()
|
||
|
Creating Characteristic Croaks
|
||
|
Creating Description Eats Bugs
|
||
|
Frog()
|
||
|
Bye!
|
||
|
Frog dispose
|
||
|
disposing Description Eats Bugs
|
||
|
disposing Characteristic Croaks
|
||
|
Amphibian dispose
|
||
|
disposing Description Both water and land
|
||
|
disposing Characteristic can live in water
|
||
|
Animal dispose
|
||
|
disposing Description Animal not Vegetable
|
||
|
disposing Characteristic has heart
|
||
|
LivingCreature dispose
|
||
|
disposing Description Basic Living Creature
|
||
|
disposing Characteristic is alive
|
||
|
*///:~
|