Olá, estou resolvendo um exercício sobre herança em Java, só que tenho um problema: minhas subclasses não conseguem acessar atributos ou métodos das classes herdadas.
Meu programa está dessa forma:
A SUPERCLASSE FUNCIONARIO
package com.matheus.java.herancadois;
public class Funcionario {
protected String nome;
protected long cpf;
protected long rg;
protected double salario;
public void receberAumento(){
this.salario += 0.10;
System.out.println("RECEBEU AUMENTO DE 0,10");
}
public void exibirDados(){
System.out.println("NOME: "+this.nome);
System.out.println("CPF: "+this.cpf);
System.out.println("RG: "+this.rg);
}
}
SUBCLASSE GERENTE (HERDA DE FUNCIONARIO)
package com.matheus.java.herancadois;
public class Gerente extends Funcionario {
String NivelGerencia;
@Override
public void receberAumento(){
this.salario += 0.15;
System.out.println("RECEBEU AUMENTO DE 0,15");
}
}
SUBCLASSE ASSISTENTE (HERDA DE FUNCIONARIO)
package com.matheus.java.herancadois;
public class Assistente extends Funcionario {
protected int matricula;
public int getMatricula(){
return this.matricula;
}
@Override
public void exibirDados(){
System.out.println("NOME: "+this.nome);
System.out.println("CPF: "+this.cpf);
System.out.println("RG: "+this.rg);
System.out.println("MATRÍCULA: "+this.matricula);
}
}
SUBCLASSE ADMINISTRATIVO (HERDA DE ASSISTENTE)
package com.matheus.java.herancadois;
public class Administrativo extends Assistente {
String turno;
public void adicionalNoturno() {
if(this.turno.equalsIgnoreCase("noturno")) {
super.salario += 50.00; //O ERRO ESTÁ AQUI
System.out.println("ADICIONAL NOTURNO ADICIONADO");
} else {
System.out.println("ESTE FUNCIONÁRIO NÃO OPERA NO PERÍODO NOTURNO");
}
}
}
SUBCLASSE TECNICO (HERDA DE ASSISTENTE)
package com.matheus.java.herancadois;
public class Tecnico extends Assistente {
public void bonusSalarial() {
super.salario += 100.00; // O ERRO ESTÁ AQUI
System.out.println("BÔNUS SALARIAL DE 100,00 REAIS ADICIONADO");
}
}
Como podem ver eu tenho a SUPERCLASSE “FUNCIONARIO”, as SUBCLASSES “GERENTE” e “ASSISTENTE” (que herdam de “funcionario”), e outras SUBCLASSES “ADMINISTRATIVO” e “TÉCNICO” (que herdam de “assistente”);
O problema é que não consigo acessar os atributos e métodos da SUPERCLASSE “FUNCIONARIO” e da SUBCLASSE “ASSISTENTE” dentro das minhas subclasses “ADMINISTRATIVO” e “TÉCNICO”(mesmo que eu use a keyword SUPER para fazer referência a superclasse, não funciona. Eu também deixei os atributos como “protected” para que eles possam ser acessados pelas subclasses, mas também não funciona). Por quê isso aconteçe ? Estou preso nesses problema e não consigo resolver, se alguém puder me ajudar eu agradeço.