Oi Flávio! Tudo bem?
A herança garante que as classes que herdam tenham as mesmas características da classe pai.
Em se pensar em produto, você pode modelar de forma que tudo que se vender é um produto e nesta classe você coloca todos o que é comum entre livros, video grames, filmes, CD/DVD, etc.
Assim poderia ser modelado dessa maneira:
import java.util.ArrayList;
import java.util.Collection;
public class Product {
private String id;
private String name;
private String description;
private Boolean active;
private String imageURL;
private Collection<String> tags = new ArrayList<>();
/* ommited getters and setters */
}
class Book extends Product {
private String pages;
private Collection<Author> authors = new ArrayList<>();
private String type;
/* ommited getters and setters */
}
class Games extends Product {
private String pages;
private String gamePlayUrl;
/* ommited getters and setters */
}
Como você pode ver, tudo que é comum, deve ser colocado na classe pai.
Espero ter ajudado,
Abraço e sucesso,
Rodrigo