O segundo erro pode ser resolvido por uma redefinição de método. Nós dizemos que um método da subclasse redefine um método da sua classe superior, se eles têm a mesma assinatura, mas o tratamento efetuado é reescrito dentro da subclasse. Apresentamos a seguir o código da classe Quadrado no qual os dois problemas foram resolvidos.

public class Quadrado extends Retangulo {
public Quadrado(int lado) {
super(lado, lado);
}
public void mostrar() {
System.out.println(”Quadrado ” + this.getComprimento());
}
}

No momento da redefinição de um método, ou também chamada de sobrecarga, é ainda possível acessar o método que foi redefinido na classe superior. Esse acesso utiliza igualmente a palavra-chave super como prefixo para o método. No nosso caso, será necessário escrever super.mostrar() para efetuar o tratamento do método mostrar da classe Retângulo.

Por fim, é ainda possível impedir a redefinição de um método ou atributo incluindo a palavra-chave final no início da assinatura do método ou da declaração de um atributo. É também possível impedir a herança de uma classe utilizando também a palavra final no início da declaração da classe (antes da palavra-chave class). É importante salientar que os atributos definidos com o modificador final devem necessariamente ser inicializados na declaração ou pelo construtor da classe. Caso essa condição não seja satisfeita serão geradas advertências durante a compilação e será gerado um erro durante o processo de execução.

Copyright © 2014 AIEC.