Pessoal, sempre li que tipos private não podem ser herdados. Isso sempre me gerou grande dúvida, pq afinal, se tipo private não podem ser herdados, qual o sentido de termos atributos private em uma classe mãe, sendo que o filho não receberá nenhum desses atributos? Outra dúvida minha é a seguite. Tenho 3 classes. Funcionário, Gerente e Teste. Seguem as classes abaixo
public class Funcionario {
private String setor;
private String salario;
public String getSetor() {
return setor;
}
public void setSetor(String setor) {
this.setor = setor;
}
public String getSalario() {
return salario;
}
public void setSalario(String salario) {
this.salario = salario;
}
}
public class Gerente extends Funcionario {
}
----------------------------------------------------
public class Teste {
public static void main(String[] args) {
Gerente gerente = new Gerente();
gerente.setSalario("100");
System.out.println("O salario é " + gerente.getSalario());
}
}
A saída desse código, como vcs devem saber é "O salário é 100".
Ai vem minha duvida, se o atributo salário é private em Funcionario, quer dizer que Gerente não o herdou, porém herdou os métodos getSalario() e setSalario(String salario), pois ambos são públivos. Como um objeto da classe gerente pode dar um get e um set na propriedade salario se ela não é definida na classe? Isso deveria gerar um erro de compilação já que Gerente não tem atributo nenhum. Agradeço a ajuda.
Sempre me perguntei o porquê disso e acho que poderia ser mais simples mesmo…