Abaixo, apresentamos a implementação da classe pessoa.
Exemplo _3_1_1: definição da classe pessoa
import java.util.Calendar; public class funcionario extends pessoa{ public Calendar dataDeAdmissao; public String data; public funcionario(String Nome, String Tratamento, char sexo) { //O comando abaixo chama o construtor da classe pai super(Nome, Tratamento, sexo); } public funcionario(String Nome, String Tratamento, char sexo, String dataDeAdmissao) { super(Nome, Tratamento, sexo); data = dataDeAdmissao; this.dataDeAdmissao = Calendar.getInstance(); this.dataDeAdmissao = Calendar.getInstance(); this.dataDeAdmissao.set(Calendar.YEAR,Integer.parseInt(dataDeAdmissao.substring(6, 10))); this.dataDeAdmissao.set(Calendar.MONTH, Integer.parseInt(dataDeAdmissao.substring(3, 5))); this.dataDeAdmissao.set(Calendar.DAY_OF_MONTH, Integer.parseInt(dataDeAdmissao.substring(0, 2))); } public static void main(String[] args) { funcionario func = new funcionario("Andrei","Sr.",'M',"02/01/2015"); System.out.print(func.data.substring(0, 2)+func.data.substring(3, 5)+func.data.substring(6, 10)); } }
Vejam que não houve nenhuma diferença na declaração da classe pai. A declaração da classe funcionario é mostrada abaixo:
Exemplo _3_1_2: definição da classe funcionário.
Como vimos, o método super (linhas 10 e 14) chama o construtor da classe pai. No exemplo declaramos um objeto do tipo funcionario (linha 24). Entretanto, em função da herança poderíamos ter escrito:
funcionario func = new funcionario("Andrei","Sr.",'M',"02/01/2015");
ou
pessoa func = new funcionario("Andrei","Sr.",'M',"02/01/2015");
Ou seja, um objeto da classe pai pode receber um objeto da classe filha. Uma forma simples de entender isso é que um funcionário é sempre uma pessoa. O contrário não é verdadeiro, ou seja, um objeto da classe filha não pode receber a referência de um objeto da classe pai. O código abaixo está errado:
//ATENÇÃO: CÓDIGO INCORRETO!!! Funcionário func = new pessoa("Andrei","Sr.",'M',"02/01/2015");