// Pseudo-Java code illustrating "vehicle" object hierarchy
abstract class Vehicle {
private Color color;
protected int speed;
public Color getColor() { return color; }
public void setColor(Color c) { color = c; }
public int getSpeed() { return speed; }
public abstract void setSpeed(int s);
}
interface Fuelable {
public abstract void refuel();
public abstract int checkFuel();
}
class Car extends Vehicle implements Fuelable {
private Wheel leftFrontWheel, rightFrontWheel,
leftRearWheel, rightRearWheel;
protected int fuel;
public void setSpeed { if (s < 65) { speed = s} }
public void refuel() { fuel = 10; }
public int checkFuel { return fuel; }
// and do something with the wheels...
}
class SportsCar extends Car {
public void setSpeed { if ( s < 100) { speed = s} }
}
class Pickup extends Car {
private Payload contents;
public void refuel { fuel = 30; }
// and public methods to get and set the payload...
}
class Bicycle extends Vehicle {
// two wheels, setSpeed...
}
class Motorcycle extends Bicycle implements Fuelable {
// override setSpeed, implement refuel and checkFuel...
}
class Sled extends Vehicle {
// override setSpeed, runners?
}
class Highway {
public boolean allowOnHighway(Vehicle v) {
if (v.getSpeed > 45)
return true;
else
return false;
}
}
class GasStation {
public void fillerUp(Fuelable f) {
f.refuel();
}
}