[RESOLVIDO] Array de classes e heranças

4 respostas
manuBittencourt

Pessoal, boa tarde.

Possuo no meu programa uma classe pai Funcionarios e uma classe filha FuncEnsinoBasico (FuncEnsinoBasico extends Funcionario).

A subclasse FuncEsinoBasico possui um atributo e métodos exclusivos dela:
private String escola;
public String getEscola() {
        return escola;
    }
public void setEscola(String escola) {
        this.escola = escola;
    }
Aí eu tenho uma classe Empresa com o atributo:
private Funcionario[] funcionario = new Funcionario[10];
E estou tentando executar o método abaixo mas dá erro na linha funcionario[i].setEscola("Escola x");, ou seja, ele não enxerga o método setEscola, exclusivo da classe filha FuncEnsinoBasico
public void setFuncionario(Funcionario f, int i){
        if (f instanceof FuncEnsinoBasico) {
            funcionario[i] = f;
            funcionario[i].setEscola("Escola x");
            funcionario[i].setNome("João");
            funcionario[i].setEscolaridade(1);
            funcionario[i].setSalario(1);
            
        }
    }

O erro é:
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: modulo07.Funcionario.setEscola

Alguém sabe o que estou fazendo de errado?

Grata!

4 Respostas

pmlm

O compilador é “burro” e não sabe que esse Funcionario é um FuncEnsinoBasico. Tens de dizer isso explicitamente.

public void setFuncionario(Funcionario f, int i){  
    if (f instanceof FuncEnsinoBasico) {  
        funcionario[i] = f;  
        ((FuncEnsinoBasico)funcionario[i]).setEscola("Escola x");
G

mas funcionário não tem o o metodo mesmo não. tem?

manuBittencourt
pmlm:
O compilador é "burro" e não sabe que esse Funcionario é um FuncEnsinoBasico. Tens de dizer isso explicitamente.
public void setFuncionario(Funcionario f, int i){  
    if (f instanceof FuncEnsinoBasico) {  
        funcionario[i] = f;  
        ((FuncEnsinoBasico)funcionario[i]).setEscola("Escola x");

Funcionou!! Muito obrigada! :D

nel

Não, quem tem o método é sua classe filha. A classe pai não tem conhecimento dos métodos da classe filha além dos que ela mesmo possui.

Criado 10 de abril de 2012
Ultima resposta 11 de abr. de 2012
Respostas 4
Participantes 4