Professional Documents
Culture Documents
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
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.
return nome; }
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()); } }
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