Construtor da classe mãe não é visível na filha?

3 respostas
andrepm

Pessoal boa tarde:

Tenho as seguintes classes:

public class Funcionario {

	protected String nome, departamento, RG, email;
	protected Double salario;
	protected Boolean veioTrabalhar, demitido = false;
	protected Data dtEntrada;
	static private int qtde;
	
	Funcionario (String nome, String departamento, String RG, String email){
		this.nome = nome;
		this.departamento =  departamento;
		this.RG = RG;
		this.email = email;
		Funcionario.qtde = Funcionario.qtde + 1;
	}
	
	public int getQtde(){
		return this.qtde;
	}
	
	public String getNome (){
		return this.nome;
	}
	
	public String getDepartamento (){
		return this.departamento;
	}
	
	public String getRG(){
		return this.RG;
	}
	
	public String getEmail(){
		return this.email;
	}
	
	public double getBonificacao() {
		return salario * 0.10;
		}

	void recebeAumento (double quantidade){
		double novoSalario = this.salario + quantidade;
		this.salario = novoSalario;
	}

	double calculaGanhoAnual(){
		return this.salario * 12;		
	}

	boolean demite (){
		//System.out.println("Funcionário demitido");
		this.demitido = true;
		return true;
	}

	void mostra(){
		System.out.println("Nome: " + this.nome);
		System.out.println("Departamento: " + this.departamento);
		//utiliza o método dataFormat do objeto Data (dtEntrada é do tipo Data)
		System.out.println("Data de entrada: " + this.dtEntrada.dataFormat());
		System.out.println("RG: " + this.RG);
		System.out.println("Email: " + this.email);
		System.out.println("Salário: " + this.salario + "\n");
	}

}
public class Gerente extends Funcionario {

	int senha;
	int numeroDeFuncionariosGerenciados;

	public boolean autentica(int senha) {
		if (this.senha == senha) {
			System.out.println("Acesso Permitido!");
			return true;
		} else {
			System.out.println("Acesso Negado!");
			return false;
		}
	}
	
	@Override
	public double getBonificacao() {
		return salario * 0.10;
		}
	
}

A classe filha gerente está pedindo para definir novamente o construtor. É realmente necessário ou eu consigo contornar isso de alguma forma?

3 Respostas

G

Sim…

Ficaria algo do tipo

public Gerente(String nome, String departamento, String RG, String email){ super(nome, departamento, RG, email); }

veja da seguinte maneiro um Gerente é um Funcionario…

um Funcionario quando é instanciado precisa de nome, departamento, RG e email
se voce instanciar um Gerente sem passar esses parametros como a JVM vai saber quais são eles ?

se o construtor de Funcionario fosse sem argumentos não seria necessario ja que o construtor default é assim:

public Gerente{ super(); }

entendeu ?

andrepm

Entendi, mas eu pensei que haveria alguma forma de o construtora de Gerente() herdar os argumentos da Funcionario().

Então tudo bem, irei incluir os argumentos no construtor. Obrigado!

C

andrepm:
Entendi, mas eu pensei que haveria alguma forma de o construtora de Gerente() herdar os argumentos da Funcionario().

Então tudo bem, irei incluir os argumentos no construtor. Obrigado!

Me corrijam se estiver errado… Não existe como herdar os argumentos do construtor de Funcionario.

Tem que ser feito como o amigo aí de cima falou mesmo.

Criado 20 de março de 2014
Ultima resposta 21 de mar. de 2014
Respostas 3
Participantes 3