Você está na página 1de 5

Universidade Zambeze

Faculdade de Cincias e Tecnologias


Curso de Engenharia Informtica
Herana
Muitas vezes, classes diferentes tm caractersticas comuns, ento, ao invs de
criarmos

uma

nova

classe

com

todas

essas

caractersticas

usamos

as

caractersticas de um objecto ou classe j existente.


A essncia fundamental por trs da herana de poder criar novas classes com
base em classes j existentes, pois ao se herdar de uma classe j existente, h
reutilizao (herana) dos mtodos e campos.
Classes, superclasses e subclasses
Supondo que esteja a trabalhar para uma empresa em que os gestores
possuem um tratamento diferente em relao a outros funcionrios. De princpio os
gestores so iguais a qualquer funcionrio em muitos aspectos, pois tanto os
funcionrios como os Gestores tm um salrio. Mas, embora se espere que os
funcionrios completem suas tarefas em troca de um salrio, os Gestores recebem
um subsdio (bnus) caso alcancem o que suposto fazerem.
A explicao anterior constitui uma situao ideal para mostrar como a herana
funciona. Vejamos, ao criar uma nova classe, Gestor, e adicionar as suas
funcionalidades, voc pode reter parte do que j tenha programado na classe,
Funcionario, e os campos desta classe podem ser usados na classe, Gestor.
De forma abstracta podemos dizer que h um relacionamento do tipo um
entre o Gestor e o Funcionario, pois cada Gestor um Funcionario.
Podemos definir uma classe que herda da outra da seguinte forma:
Para podermos utilizar ou fazer uma classe herdar as caractersticas de uma
outra, usamos a palavra reservada extends, imediatamente a seguir a definio da
classe seguida do nome da classe que pretendemos herdar. Vejamos a seguir:
class <nome_da_classe_criada> extends <nome_da_classe_Herdada> {
//corpo da classe
}

Exemplo:
Disciplina: Programao I
Ano: 2o
Semestre: 3o

Cdigo da disciplina: PROG I


Pginas:1 de 5

Universidade Zambeze
Faculdade de Cincias e Tecnologias
Curso de Engenharia Informtica
class Gestor extends Funcionario{
//corpo da classe }

A classe existente a partir do qual outras classes herdam chamada de


superclasse, classe bsica ou classe pai. A nova classe (a classe que herda)
chamada subclasse, classe derivada ou classe filha. Embora existam vrias
denominaes, os termos superclasse e subclasse so os mais comummente
utilizados por programadores em Java, no entanto h quem prefira utilizar a
analogia pai/filho.
Nota: Java permite que uma classe herde apenas as caractersticas de uma
nica classe, ou seja, no pode haver heranas mltiplas. Porm, permitido
heranas em cadeias, como exemplo podemos ter uma classe Mamfero a qual
herda da classe Animal, quando fizermos a classe Cachorro herdar a classe
Mamfero, a classe Cachorro tambm herdar as caractersticas da classe Animal.

O facto de uma classe ser uma superclasse no significa que contenha mais
funcionalidades, na verdade , as subclasses costumam possuir mais funcionalidades
em relao as superclasses.
Agora vamos modelar a classe Funcionario:
Vamos modelar a classe Funcionario:
class Funcionario {
String nome;
String cpf;
double salario;
// mtodos }

Disciplina: Programao I
Ano: 2o
Semestre: 3o

Cdigo da disciplina: PROG I


Pginas:2 de 5

Universidade Zambeze
Faculdade de Cincias e Tecnologias
Curso de Engenharia Informtica
Como vimos anteriormente, alm de um funcionrio comum, h tambm outros
cargos, como os Gestores. Os Gestores guardam a mesma informao que um
funcionrio comum, mas possuem outras informaes, alm de ter funcionalidades
um pouco diferentes.

class Gestor {
String nome;
String cpf;
double salario;
int senha;
int numeroDeFuncionariosGerenciados;

public boolean autentica(int senha) {


if (this.senha == senha) {
System.out.println("Acesso Permitido!");
return true;
} else {
System.out.println("Acesso Negado!");
return false;
}
}
// outros mtodos
}

Sabendo que um Gestor de principio um funcionrio, assim , com recurso a


herana podemos fazer com que o Gestor tenha tudo que um Funcionario tem,
gostaramos que ela fosse uma extenso de Funcionario.
class Gerente extends Funcionario {
int senha;
int numeroDeFuncionariosGerenciados;

Disciplina: Programao I
Ano: 2o
Semestre: 3o

Cdigo da disciplina: PROG I


Pginas:3 de 5

Universidade Zambeze
Faculdade de Cincias e Tecnologias
Curso de Engenharia Informtica
public boolean autentica(int senha) {
if (this.senha == senha) {
System.out.println("Acesso Permitido!");
return true;
} else {
System.out.println("Acesso Negado!");
return false;
}
}
// setter da senha omitido
}

Nota :
Em todo momento que criarmos um objecto do tipo Gerente, este objecto possuir
tambm os atributos definidos na classe Funcionario, pois um Gerente um
Funcionario.

*SUPER
uma palavra chave utilizada para acessar mtodos da superclasse. A palavra
Super direcciona

compilador

para

invocar

um

mtodo

da

superclasse.

Normalmente ele utilizado no caso de herana, e que se deseja que a


classe filha utilize os recursos da classe Pai.
public class Funcionario{
public void recebeBonus( ){
//comandos para receber bonus
}
}
public class Gerente extends Funcionario{
public void recebeBonus ( ){
super.recebeBonus( );//Acessa mtodo da classe Funcionario
}
}

Disciplina: Programao I
Ano: 2o
Semestre: 3o

Cdigo da disciplina: PROG I


Pginas:4 de 5

Quando

nenhuma

Universidade Zambeze
Faculdade de Cincias e Tecnologias
Curso de Engenharia Informtica
superclasse declarada explicitamente,

Java

assume

automaticamente
que a Superclasse a classe Object, ou seja, toda classe Java filha, no
minimo, da
classe Object.

Bibliografia
*Barnes, DAVID J.;Kolling,MICHAEL;

Programao Orientada a Objectos; So

Paulo:Pearson Prentice Hall,2004.


*DEITEL, H. M., DEITEL, P. J., Java: Como programar, 8ed., Pearson Prentice Hall,
2010.
*Farinelli,Fernanda;Conceitos Bsicos de Programao Orientada a Objetos, 2007
*SINTES, A., Aprenda Programao Orientada a Objectos em 21 dias, Makron Books,
2002.
*Claro, Daniela; Sobral, Joo Programao em Java, 2008
*XAVIER, Denys William, Herana de Classes. Acessado 15 20 de Abril de

2015.

Disponivel em:http://www.tiexpert.net/programacao/java/heranca.php

Disciplina: Programao I
Ano: 2o
Semestre: 3o

Cdigo da disciplina: PROG I


Pginas:5 de 5

Você também pode gostar