Dúvida javaranch

1 resposta
deyvid
class Exam {
        protected String difficultyLevel = "easy";
        public void printDifficultyLevel() {
           System.out.println( difficultyLevel  );
        }
}

class SCJPExam extends Exam {
                private String difficultyLevel = "killing";
}

SCJPExam myExam = new SCJPExam();
myExam.printDifficultyLevel();

por que a saída é "easy""

1 Resposta

T

Diferentemente de métodos (que podem ser sobreescritos, mas não podem ser tornados “menos públicos”), as variáveis de instância não são sobreescritas e sim “escondidas”.

No seu caso, você declarou uma variável de instância “difficultyLevel” na classe pai, e mais uma variável de instância com o mesmo nome na classe filha; isso escondeu a variável da classe pai. O método da classe pai não enxerga a variável da classe filha, nem a classe filha consegue enxergar a variável da classe pai.

Criado 6 de fevereiro de 2009
Ultima resposta 6 de fev. de 2009
Respostas 1
Participantes 2