Eu declarando a classe Produto como abstrata, deixo de ter os outros produtos, passando a trabalhar apenas com Livros Físicos ou Digitais.
Agora, se eu apenas tirar o conteúdo do método atualizaBaseadoEm e implementá-los nas classes filhas, ainda posso manter os demais produtos.
O único problema é se aparecer um novo tipo e esquecer de implementar o método. Os campos novos relativos e que precisariam se carregados, não serão, mas aí, é só implementar e volta a funcionar.
Tem alguma outra forma de forçar a implementação de um método, sem a necessidade de transformar a classe toda em abstrata?