You are on page 1of 24

Programao

Herana
Polimorfismo
Aula Teorica 12

Conceito de Herana em
JAVA
Ao se programar em Java, h a necessidade
de trabalharmos com vrias classes. Muitas
vezes, classes diferentes tem
caractersticas comuns, ento, ao invs de
criarmos uma nova classe com todas essas
caractersticas usamos as caractersticas de
uma classe j existente.
Ou seja, herana , na verdade, uma classe
derivada de outra classe, ou quando uma
classeherda atributosde outra.

Conceito de Herana em
JAVA
E, muitas vezes surge com a inteno
de diminuir duplicaes de cdigos.
Dessa forma podemos criar uma
classe principal, onde outras classes
irao herdar seus membros Havera
uma relao entre essas classes. A
classe principal e parentClass ou
Super Class, e a classe herdeira ChildClass ou Sub Class.

Herana Simples
A herana fornece um grande benefcio. Ao
concentrarmos caractersticas comuns em uma
classe e derivar as classes mais especficas a partir
desta, estamos preparados para a adio de novas
funcionalidades ao sistema. Se mais adiante uma
nova propriedade comum tiver que ser adicionada,
no precisaremos efectuar alteraes em todas as
classes. Basta alterar a superclasse. As classes
derivadas sero automaticamente actualizadas.
Dizemos que a superclasse uma generalizao e a
subclasse uma especializaao.

Herana Simples
Esta linguangem, permite
somenteherana simples, i.e. uma
classe pode herdar diretamente de
uma nica classe (possui uma nica
superclasse direta). Em
contrapartida, uma classe pode
possuir vrias subclasses diretas.

Herana Simples
Ex:
Class Pessoa

Class Aluno

Class
Professor

Herana em Cadeia
Herana simples, permite que uma sub
class s possa herdar de apenas uma
Super Class. Porm uma sub class
poder herdar de uma outra sub
class criando assim uma herana em
cadeia. Veja o exemplo a seguir.
A Class Pessoa a Super Class, a
Class Aluno uma sub class e super
class, a Class AlunoBolseiro sub
class.

Herana em Cadeia
EX:

Class Pessoa

Class Aluno

Class
AlunoBols

Herana
Um professor possui um cdigo de professor
e informaes relacionadas sua formao.
aqui que a herana se torna uma
ferramenta de grande utilidade. Podemos
criar uma classe Pessoa, que possui todos
os atributos e mtodos comuns a todas as
pessoas e herdar estes atributos e mtodos
em classes mais especficas, ou seja, a
herana parte do geral para o mais
especfico.

Extends e Super

Para fazermos uma classe herdar as caractersticas


de uma outra, usamos a palavra
reservadaextendslogo aps a definio do
nome da classe. Dessa forma:
classNomeDaClasseASerCriadaextendsNomeDa
ClasseASerHerdada.
Importante: 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.

Construtor
Tratando-se de herana de classes,
toda classe tem seu
mtodo construtor. Portanto, se
tivermos duas classes, temos dois
mtodos construtores. Para aceder o
mtodo construtor da classe que
est sendo herdada usamos a
palavrasuper(). Ou seja, serve
parachamar o construtor da
classe pai.

Herana
O que uma pessoa, um aluno, um
professor possuem em comum?
Todos eles so pessoas portanto,
compartilham alguns dados comuns.
Todos tm nome, idade, endereo,
etc. E, o que diferencia um aluno de
uma outra pessoa qualquer? Um
aluno possui um nr. de matrcula; Um
funcionrio possui um cdigo de
funcionrio, data de admisso,

Herana
Public class Pessoa{
private String nome; private int idade;
}
Esta classe possui os atributos nome e
idade. Estes atributos so comuns a
todas as pessoas. Podemos criar uma
classe Aluno que herda os atributos
da classe Pessoa e inclui seu prprio
atributo, a saber, seu nmero de
matrcula.

Exemplo Classe Pessoa


public class Pessoa{

private String nome, apelido;


private int idade;
public Pessoa (String nom, String ape) { nome=nom;
apelido=ape; }
public Pessoa (String nom) { } // 2 construtores
public String getNome() {

return nome; }

public String getApelido() {

return apelido; }
public void setApelido(String apelido) { }
public void setIdade(String idade) { }
public void mostraDados() { // metodo mostra dados que tem na classe aluno

System.out.println( getNome()); } }

Exemplo Classe Aluno

public class Aluno extends Pessoa{


private int nrmatricula;
public Aluno (String nom, String ape, int nrmatr) {
super( nom, ape);
nrmatricula=nrmatr; }
public Aluno (String nom, int nrmatr){ // 2 construtores
super( nom); }
public int getCaldesconto() {
int caldesconto=nrmatricula+3;
return caldesconto;}
public int getNrmatricula() {
return nrmatricula;}
public void mostraDados(){ // metodo com mesmo nome na classe pessoa
System.out.println( getApelido());
}}

Funo main

import java.io.*;
public class main {
public static void main(String[] args) throws IOException{
System.out.println("Digite o nome: ");
BufferedReader xy = new BufferedReader(new InputStreamReader(System.in));
String x = xy.readLine();
System.out.println("Digite o apelido: ");
String y = xy.readLine();
System.out.println("Digite nr matricula: ");
int z = Integer.parseInt(xy.readLine());
Aluno p= new Aluno (x,y,z);
Pessoa c= new Pessoa(x,y);
System.out.println("O nome completo: "+ p.getNome() + " " + p.getApelido() + "
" + p.getNrmatricula() );
System.out.println("O calculo do desconto e: "+ p.getCaldesconto() );
p.mostraDados(); c.mostraDados(); }}

Herana Multipla
Java no permite herana multipla, para
tal implementa-se o conceito de
interface.
Sendo possivel herdar-se mltiplas
interfaces.
Para implementar uma interface em uma
classe, usamos a palavra implements.
Nao confundir Interface com Interface
Grafica.

Herana Multipla
Ex:

Class
Funcionari
o

Class
Pessoa

Class
Professor

Class
ProfessorUn
iv

Polimorfismo
Polimorfismo, que vem do grego "muitas
formas". o termo definido em linguagens
orientadas a objecto - como o Java - para a
possibilidade de se usar o mesmo elemento
de forma diferente, que so dechamadas de
mtodos. Portanto, em Java, o polimorfismo
se manifesta apenas em chamadas de
mtodos. Polimorfismo significa que uma
chamada de mtodo pode ser executada de
vrias formas. Quem decide "a forma" o
objecto que recebe a chamada.

Polimorfismo
O sentido da palavra polimorfismo o
uso de um nico nome para definir
vrias formas distintas, uma
facilidade que permite que dois ou
mais objectos diferentes respondam
a mesma mensagem.

Sobrecarga de Metodos
Sobrecarga de mtodopermite a existncia
de vrios mtodos de mesmo nome, porm
com assinaturas diferentes ou seja variando
no nmero , tipo de argumentos , no valor de
retorno e at variveis diferentes. Ficar a
cargo do compilador escolher de acordo com
as listas de argumentos os procedimentos ou
mtodos a serem executados, ou seja, ser
determinado o mtodo a ser invocado pelo
tipo de parmetro passado.

Sobrecarga de Metodos
A importncia de permitir a sobrecarga
de mtodos reside em uma mera
convenincia para evitar que se
tenha que escolher e usar nomes
novos para cada definio, ou para
evitar conflitos entre nomes
existentes em um determinado
escopo e, assim, evitar a "poluio"
do espao de nomes usados em
programas.

Polimorfismo
Ex:
Relatorio

Imrimir

Fotografi
a

Sobrecarga de Metodos

public class Soma {


public int Soma(int x, int y)
{ return x+y; }
public String Soma(String x, String y)
{ return x+y; }
public double Soma(double x, double
y) { return x+y; } }

You might also like