public abstract class Personagem {
public abstract Item criarItemUtil();
// …
}
public class Feiticeiro extends Personagem {
public Item criarItemUtil() {
return new Magia(); // Magia é uma subclasse de Item
}
// ...
}
public class Sala {
public void entra(Personagem p) {
Item it = p.criaItemUtil();
}
}