interface Portable { Boolean abstract canCarry(Player player) } abstract class AbstractItem implements Portable { ... } class WeightyItem extends AbstractItem { ... } class MagicalItem extends AbstractItem { ... }