[RESOLVIDO] Array de classes e heranças

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

[code] 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);

    }
}

[/code]

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!

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");  
     
          
 

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

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

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

[/code][/quote]

Funcionou!! Muito obrigada! :smiley:

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.