Considere o cenário de um sistema de gerenciamento de biblioteca, onde Livro representa diferentes tipos de livros e Biblioteca é uma classe que agrega esses livros, como mostra o diagrama a seguir.
Os trechos de código em Java a seguir são parte dessa implementação; assuma que o resto do código não apresentado foi implementado com base no diagrama.
class LivroFisico extends Livro {..
public void exibirInfo() {
System.out.println(titulo + “ – livro Físico”);
}
...
class LivroDigital extends Livro {..
public void exibirInfo() {
System.out.println(titulo + “ – Livro Digital”);
}
...
class Biblioteca { ..
public void exibirLivros() {
for(Livro livro : livros) {
livro.exibirInfo();
}
}
...
bib.adicionarLivro(new LivroFisico(“1984”));
bib.adicionarLivro(new LivroDigital(“Macunaíma”));
bib.exibirLivros();
Quando executado, esse código exibirá o seguinte resultado:
1984 - Livro Físico Macunaíma - Livro Digital
Livro Físico – 1984 Livro Digital - Macunaíma
1984 Macunaíma
Macunaíma - Livro Digital 1984 - Livro Físico
Erros de compilação ou exceções em tempo de execução