Retornar os valores das variáveis de diferentes objetos

Ola a todos, criei três classes para uma papelaria (caderno, lápis e caneta) essas classes possuem diferentes tipos de atributos, existe uma classe de manipulação e nessa classe um método " String consulta()" , esse método deve retornar todos os atributos de cada um dos objetos.

Todos eles são herdados da classe pai " Produto" .

Preciso usar reflection? Se não o que preciso fazer ?

Uma classe pra cada tipo de produto que a papelaria for vender? Isso ficou bem engessado.

Nao deu muitos detalhes, mas a princípio ficaria mais flexível ter Produto, Categoria e Características de Categoria, podendo cadastrar o que quiser de específico pra cada categoria, sem essa complicação de heranças e modelo engessado.

Creio que isso seja parte do exercício, senão, está totalmente fora de contexto.

Imaginei que fosse isso.

Reflection? Não. Você pode, apenas, identificar o tipo de produto e instanciar um objeto a partir do tipo de classe identificado.
Como?

  1. No cadastro: pergunte o que vai ser cadastrado.
  2. Na leitura: use a keyword instanceof

Faz parte do exercício.
Existe uma interface de manipulação, e nela existem os métodos consulta e cadastro.
Minha dificuldade é em relação a essa função consulta.
Desculpa pelos erros, ainda tô começando em Java.

Outra opção seria o padrão strategy

Vi aqui sobre, e pode sim ajudar.
Vou tentar fazer.

Trabalhar com design patterns pode parecer chato, difícil, ruim, complicado… Mas, quando engrena, vai que vai.

Querido, se eu usar a interface de manipulação.
E em cada objeto colocar, implements manipulação.
E colocar a assinatura dos métodos lá, daria certo? Faz sentido?

A ideia do strategy é resolver problemas como este. Provavelmente vá funcionar.