Herança e Polimorfismo
Herança e Polimorfismo
A herança é um importante recurso da programação orientada a objeto que permite derivar uma nova classe mais especializada a partir de outra mais genérica existente. A classe derivada é chamada de subclasse, enquanto a classe original é dita superclasse. A subclasse assume (herda) os atributos (variáveis de instância) da superclasse e pode adicionar novos atributos exclusivamente seus. Quanto aos métodos, a subclasse pode utilizar (herdar) ou alterar os existentes na superclasse, bem como pode criar novos para seu uso. Os construtores não são herdados.
Graficamente (UML), representa-se esse relacionamento entre as duas classes com o desenho abaixo.
Como exemplo, vamos criar uma subclasse da classe Funcionario.
Um tipo especial de funcionário é um gerente, que, antes de mais nada, é um funcionário, mas possui algumas características adicionais àquelas do funcionário comum.
Por exemplo, só gerentes têm secretários, e seus salários são maiores que os dos demais.
Repare que a classe Gerente possui um atributo adicional para guardar o nome do secretário. Porém, ele utilizará os três atributos da superclasse, porque, não esqueçamos, o gerente é um funcionário. Na parte dos métodos, há um construtor da subclasse, o método exibeDados é redefinido pela subclasse e ela tem um método novo nomeiaSecretário.
Aqui irei implementar a classe funcionario e a classe gerente, mas não irei fazer igual da UML pois ja tenho uma pronta e estou com preguiça
Classe Funcionario
public class Funcionario
{
protected int ctps; protected String nome; protected double NumHorasTra; protected double ValorHora;
public Funcionario(int ctps, String nome, double NumHorasTra, double ValorHora)
{
this.ctps = ctps; this.nome = nome; this.NumHorasTra = NumHorasTra; this.ValorHora = ValorHora;
}
public Funcionario()
{
ctps = 0; nome = "";
NumHorasTra = 0;
ValorHora = 5;
}
public double calcSalario()
{