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…