Considere o conceito de animal, contendo as propriedades idade e nome. Considere ainda as especializações deste conceito: cão e gato. Os conceitos cão e gato têm, respectivamente, o peso e o número de vidas como propriedades adicionais. Considere que todos os animais dormem, mas que apenas os gatos trepam e que apenas os cães ladram. Implemente em Java as classes que representam estes conceitos: cada método dos anteriores deve ser implementado simplesmente com uma instrução que apresente uma cadeia de caracteres descritiva da acção. Implemente ainda os métodos que permitem comparar instâncias para cada uma das classes (equals), assim como os métodos de linearização textual (toString). Os animais genéricos podem ser inicializados especificando-se apenas a idade (neste caso, o nome é vazio), mas podem ser também inicializados especificando-se ambas as propriedades (a acção para a idade é idêntica à anterior). Os cães e os gatos são sempre inicializados com explicitação das suas respectivas propriedades, i.e., idade, nome e peso ou número de vidas (conforme o caso). Construa uma aplicação (main) que ilustre a utilização das classes.