Problemas com herança em Java

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.

1 curtida

Cara, testei seu código aqui, copiei tudo igualzinho, não mudei nada, e funcionou normalmente, consigo acessar os atributos e métodos das superclasses:

public class Main {
    public static void main(String[] args) {
        Tecnico tecnico = new Tecnico();

        tecnico.nome = "SkyG0D";
        tecnico.cpf = 123456789;
        tecnico.rg = 123456789;
        tecnico.matricula = 123321;
        tecnico.salario = 10000.0;

        tecnico.receberAumento();
        System.out.println("------------------------");
        tecnico.exibirDados();
        System.out.println("------------------------");
        System.out.println("Matricula: " + tecnico.getMatricula());

    }
}

O resultado foi esse:
Screenshot_2

2 curtidas

Descobri que o problema era bem simples: só tive que compilar todo o programa pra dar uma atualizada no código (problemas de principiante). Agora deu certo, obrigado!