Como usar o super?

3 respostas
J

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

3 Respostas

G

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:

F

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

B

vou tentar explicar tudo o que sei:

classe Empregado, classe Pai
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);
	}
}

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
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;
	}
}

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

Criado 20 de outubro de 2006
Ultima resposta 24 de out. de 2006
Respostas 3
Participantes 4