Source Code For:
"Variables Have Types, Objects Have Classes",
Vol. 2, Issue 4, p. 29

Listing 1
public abstract class Animal
{
public abstract String movement();
}
 

public class Fish extends Animal
implements WaterDweller
{
public String movement()
{ return "swim";
}
}
 

public class Salmon extends Fish
{
public void jump()
{ System.out.println( "Jump" );
}
}
 

public class GoldFish extends Fish
implements FreshWaterDweller
{
}
 

public class Mammal extends Animal
{
public String movement()
{ return "quadraped";
}
}
 

public class Dog extends Mammal
{
}
 

public class Whale extends Mammal
implements SaltWaterDweller
{
public String movement()
{ return "swim";
}
}

Listing 2
public interface WaterDweller
{
}
 

public interface FreshWaterDweller
extends WaterDweller
{
}
 

public interface SaltWaterDweller
extends WaterDweller
{
}