Como usar o super?

gente eu to fazendo um curso de Java e o professor ta falando sobre como trabalhar com herança em java e ele tah usando uma palavra reservada chamada “super” para fazer referencia a propriedades e métodos de outras classes…

package negocios;
public class AlunoEdificacoes extends AlunoTresNotas {
public AlunoEdificacoes(String nome,String matricula, String filiacao) {
super(nome,matricula, filiacao, “Edificações”);

}
}

eu perguntei pra ele mas não entendi nada do qu ele falo … eu sei que to herdando e fazendo um método construtor… mas esse super puxando as propriedades que eu me enrrolei … se alguem puder me ajudar eu agradeço … não só respondendo a pergunta mas enviando algun linK de tutorial ou coisa assim …

Xau

[[]]s

1 curtida

Bom, o super é utilizado para acessar o construtor da classe pai.

Se vc tem uma classe “Carro” por exemplo, que herda da classe “Veiculo”, e quer acessar o construtor da classe Veiculo dentro da classe Carro, vc usa o super(); (Obrigatóriamente a classe Veiculo deve ter um construtor sem argumentos, caso não, deve-se passar super(arg1, arg2,…, argN):wink:

bem a grosso modo… é + ou - como se tu fosse faze isso:

package negocios;

private AlunoTresNotas alunoTresNotas = null;

public class AlunoEdificacoes extends AlunoTresNotas {
  public AlunoEdificacoes(String nome,String matricula, String filiacao) {
    alunoTresNotas = new AlunoTresNotas(nome, matricula, filiacao, "Edificações");
  }
} 

Mas bem a grosso modo… eheheh

vou tentar explicar tudo o que sei:

classe Empregado, classe Pai

[code]
public class Empregado{
private String nome;
protected double sal;
int mat; // acesso no modo package
String funcao;

public Empregado(String nome, double sal, int mat, String funcao){
	this.nome = nome;
	this.sal = sal;
	this.mat = mat;
	this.funcao = funcao;
}

public String getNome(){
       return nome;
    }
public double getSalario(){
       return sal;
    }
public int    getMatricula(){
       return mat;
    }
public String getFuncao(){
       return funcao;
    }
public void   reajustaSal(double percent){
        sal *= (1+percent/100);
}

}[/code]

classe Gerente, filho de Empregado

public class Gerente extends Empregado{
	protected double bonus;
	private String nomeSecretaria;

	public Gerente(String nome, double sal, int mat, String funcao, double bonus, String nomeSecretaria){
		super(nome, sal, mat, funcao); //usando o construtor de Empregado, mas vc ta construindo o Gerente, vc só precisa passar os dados que tem em Empregados

		this.bonus = bonus; //somente o Gerente vai ter, por isso fica fora do super

		this.nomeSecretaria = nomeSecretaria; 
	}

	public double getBonus(){
		return (bonus);
	}

	public String nomeSecretaria(){
		return (nomeSecretaria);
	}

	public void setBonus(double bonus){
		this.bonus = bonus;
	}

	public void setNomeSecretaria(String nomeSecretaria){
		this.nomeSecretaria = nomeSecretaria;
	}

	public void reajustaSal(double percent){
		super.sal *= (1+percent/100) + this.bonus; //repare que o sal de salario faz parte de Empregado, então tem que usar o super. pra acessar o salario que é o Empregado, mas na verdade é do Gerente
	}
}

classe Diretor, filho de Gerente e de Empregado

[code]
public class Diretor extends Gerente{
private String area;
private double comissao;

public Diretor(String nome, double sal, int mat, String funcao, double bonus, String nomeSecretaria, String area, double comissao){
	super(nome, sal, mat, funcao, bonus, nomeSecretaria); //como ele é filho do gerente, vc monta o super como se fosse construir o gerente e acrescente aí em baixo os dados (area e a comisso) que só pertence ao diretor

	this.area = area;
	this.comissao = comissao;
}

public String getArea(){
	return (area);
}

public double getComissao(){
	return (comissao);
}

public void setArea(String area){
	this.area = area;
}

public void setComissao(double comissao){
	this.comissao = comissao;
}

public void reajustaSal(double percent){
	super.reajustaSal(percent); //usando um método que faz parte do Gerente
	super.sal += comissao;
}

}[/code]

é isso, não tem muito o que falar, é só prestar atenção no codigo que vc entenderá, qualquer dúvida…