Enviar pesquisa
Carregar
POO - 16 - Polimorfismo
•
13 gostaram
•
10,322 visualizações
Ludimila Monjardim Casagrande
Seguir
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 24
Baixar agora
Baixar para ler offline
Recomendados
POO - 17 - Interfaces
POO - 17 - Interfaces
Ludimila Monjardim Casagrande
POO - 18 - Sobrecarga e Sobreposição de Métodos
POO - 18 - Sobrecarga e Sobreposição de Métodos
Ludimila Monjardim Casagrande
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)
Daniel Brandão
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidos
Gleydson Sousa
POO - 10 - Herança
POO - 10 - Herança
Ludimila Monjardim Casagrande
POO - Aula 09 - Herança
POO - Aula 09 - Herança
Felipe J. R. Vieira
Programação orientada a objetos
Programação orientada a objetos
Cleyton Ferrari
POO - 19 - Elementos Estáticos
POO - 19 - Elementos Estáticos
Ludimila Monjardim Casagrande
Recomendados
POO - 17 - Interfaces
POO - 17 - Interfaces
Ludimila Monjardim Casagrande
POO - 18 - Sobrecarga e Sobreposição de Métodos
POO - 18 - Sobrecarga e Sobreposição de Métodos
Ludimila Monjardim Casagrande
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)
Daniel Brandão
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidos
Gleydson Sousa
POO - 10 - Herança
POO - 10 - Herança
Ludimila Monjardim Casagrande
POO - Aula 09 - Herança
POO - Aula 09 - Herança
Felipe J. R. Vieira
Programação orientada a objetos
Programação orientada a objetos
Cleyton Ferrari
POO - 19 - Elementos Estáticos
POO - 19 - Elementos Estáticos
Ludimila Monjardim Casagrande
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a Objetos
Ludimila Monjardim Casagrande
Introdução a JavaScript
Introdução a JavaScript
Bruno Catão
Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - Herança
Daniel Brandão
Aula 1 - Introdução a POO
Aula 1 - Introdução a POO
Daniel Brandão
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a Objetos
Daniel Brandão
Polimorfismo java
Polimorfismo java
FAFICA
POO - Aula 10 - Polimorfismo
POO - Aula 10 - Polimorfismo
Felipe J. R. Vieira
Java orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)
Armando Daniel
POO - 11 - Prática de Herança
POO - 11 - Prática de Herança
Ludimila Monjardim Casagrande
Tratamento de exceções java
Tratamento de exceções java
Antonio Oliveira
Linguagem C - Vetores
Linguagem C - Vetores
Elaine Cecília Gatto
Aula 09 - introducao oo
Aula 09 - introducao oo
Moacir Jóse Ferreira Junior Ferreira
Java orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
Armando Daniel
JAVA - ENCAPSULAMENTO
JAVA - ENCAPSULAMENTO
André Victor
JAVA - Orientação a Objetos
JAVA - Orientação a Objetos
Elaine Cecília Gatto
POO - 14 - Vetores
POO - 14 - Vetores
Ludimila Monjardim Casagrande
Modelagem de Dados
Modelagem de Dados
Roberto Grande
POO - 06 - Encapsulamento
POO - 06 - Encapsulamento
Ludimila Monjardim Casagrande
JAVA - Herança
JAVA - Herança
Elaine Cecília Gatto
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentais
Fabrício Lopes Sanchez
UML: Níveis de visibilidade UML x Java
UML: Níveis de visibilidade UML x Java
Rogério Araújo
Polimorfismo em java
Polimorfismo em java
Manoel Afonso
Mais conteúdo relacionado
Mais procurados
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a Objetos
Ludimila Monjardim Casagrande
Introdução a JavaScript
Introdução a JavaScript
Bruno Catão
Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - Herança
Daniel Brandão
Aula 1 - Introdução a POO
Aula 1 - Introdução a POO
Daniel Brandão
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a Objetos
Daniel Brandão
Polimorfismo java
Polimorfismo java
FAFICA
POO - Aula 10 - Polimorfismo
POO - Aula 10 - Polimorfismo
Felipe J. R. Vieira
Java orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)
Armando Daniel
POO - 11 - Prática de Herança
POO - 11 - Prática de Herança
Ludimila Monjardim Casagrande
Tratamento de exceções java
Tratamento de exceções java
Antonio Oliveira
Linguagem C - Vetores
Linguagem C - Vetores
Elaine Cecília Gatto
Aula 09 - introducao oo
Aula 09 - introducao oo
Moacir Jóse Ferreira Junior Ferreira
Java orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
Armando Daniel
JAVA - ENCAPSULAMENTO
JAVA - ENCAPSULAMENTO
André Victor
JAVA - Orientação a Objetos
JAVA - Orientação a Objetos
Elaine Cecília Gatto
POO - 14 - Vetores
POO - 14 - Vetores
Ludimila Monjardim Casagrande
Modelagem de Dados
Modelagem de Dados
Roberto Grande
POO - 06 - Encapsulamento
POO - 06 - Encapsulamento
Ludimila Monjardim Casagrande
JAVA - Herança
JAVA - Herança
Elaine Cecília Gatto
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentais
Fabrício Lopes Sanchez
Mais procurados
(20)
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a Objetos
Introdução a JavaScript
Introdução a JavaScript
Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - Herança
Aula 1 - Introdução a POO
Aula 1 - Introdução a POO
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a Objetos
Polimorfismo java
Polimorfismo java
POO - Aula 10 - Polimorfismo
POO - Aula 10 - Polimorfismo
Java orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)
POO - 11 - Prática de Herança
POO - 11 - Prática de Herança
Tratamento de exceções java
Tratamento de exceções java
Linguagem C - Vetores
Linguagem C - Vetores
Aula 09 - introducao oo
Aula 09 - introducao oo
Java orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
JAVA - ENCAPSULAMENTO
JAVA - ENCAPSULAMENTO
JAVA - Orientação a Objetos
JAVA - Orientação a Objetos
POO - 14 - Vetores
POO - 14 - Vetores
Modelagem de Dados
Modelagem de Dados
POO - 06 - Encapsulamento
POO - 06 - Encapsulamento
JAVA - Herança
JAVA - Herança
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentais
Destaque
UML: Níveis de visibilidade UML x Java
UML: Níveis de visibilidade UML x Java
Rogério Araújo
Polimorfismo em java
Polimorfismo em java
Manoel Afonso
Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas Interfaces
Regis Magalhães
Polimorfismo
Polimorfismo
Caveiras
Herança e polimorfismo em Java
Herança e polimorfismo em Java
Evandro Júnior
Java one
Java one
Ismael
Polimorfismo en JAVA
Polimorfismo en JAVA
Byron David
Interfaces e polimorfismo
Interfaces e polimorfismo
Denis L Presciliano
Erros comuns em java
Erros comuns em java
Mario Jorge Pereira
POO - Aula 13 - Classe Abstrata e Interface
POO - Aula 13 - Classe Abstrata e Interface
Felipe J. R. Vieira
3 unidade eng economica
3 unidade eng economica
Moises Souza
Curso Java #05 - Heranca, Polimorfismo e Classe abstratas
Curso Java #05 - Heranca, Polimorfismo e Classe abstratas
Renato Sousa
Curso de JSP
Curso de JSP
Marcelo Gonçalves
Polimorfismo
Polimorfismo
Daniel Arndt Alves
POO - Aula 07 - Construtores e Atributos de Classe
POO - Aula 07 - Construtores e Atributos de Classe
Felipe J. R. Vieira
Polimorfismo
Polimorfismo
Luis Álamo
Polimorfismo
Polimorfismo
Martin Soto Zepeda
Polimorfismos Geneticos
Polimorfismos Geneticos
mauroberta
Destaque
(18)
UML: Níveis de visibilidade UML x Java
UML: Níveis de visibilidade UML x Java
Polimorfismo em java
Polimorfismo em java
Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas Interfaces
Polimorfismo
Polimorfismo
Herança e polimorfismo em Java
Herança e polimorfismo em Java
Java one
Java one
Polimorfismo en JAVA
Polimorfismo en JAVA
Interfaces e polimorfismo
Interfaces e polimorfismo
Erros comuns em java
Erros comuns em java
POO - Aula 13 - Classe Abstrata e Interface
POO - Aula 13 - Classe Abstrata e Interface
3 unidade eng economica
3 unidade eng economica
Curso Java #05 - Heranca, Polimorfismo e Classe abstratas
Curso Java #05 - Heranca, Polimorfismo e Classe abstratas
Curso de JSP
Curso de JSP
Polimorfismo
Polimorfismo
POO - Aula 07 - Construtores e Atributos de Classe
POO - Aula 07 - Construtores e Atributos de Classe
Polimorfismo
Polimorfismo
Polimorfismo
Polimorfismo
Polimorfismos Geneticos
Polimorfismos Geneticos
Semelhante a POO - 16 - Polimorfismo
Dip the dependency inversion principle
Dip the dependency inversion principle
Engenharia de Software Ágil
05 poo-ii
05 poo-ii
Ialis Cavalcante
Refactoring
Refactoring
Bruno Lui
Fj pratica04
Fj pratica04
Diego Jose Barbosa
Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Manuel Menezes de Sequeira
Programação OO - Java
Programação OO - Java
Secretaria de Educação de Goiás
Introdução ao C#
Introdução ao C#
Miguel Sá Pedroso
Dip the dependency inversion principle
Dip the dependency inversion principle
Engenharia de Software Ágil
Dip the dependency inversion principle
Dip the dependency inversion principle
Engenharia de Software Ágil
Semelhante a POO - 16 - Polimorfismo
(9)
Dip the dependency inversion principle
Dip the dependency inversion principle
05 poo-ii
05 poo-ii
Refactoring
Refactoring
Fj pratica04
Fj pratica04
Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Programação OO - Java
Programação OO - Java
Introdução ao C#
Introdução ao C#
Dip the dependency inversion principle
Dip the dependency inversion principle
Dip the dependency inversion principle
Dip the dependency inversion principle
Mais de Ludimila Monjardim Casagrande
Gerenciamento Ágil de Projetos com Scrum
Gerenciamento Ágil de Projetos com Scrum
Ludimila Monjardim Casagrande
POO - 23 - Coleções da API do Java
POO - 23 - Coleções da API do Java
Ludimila Monjardim Casagrande
POO - 22 - Tratamento de Exceções em Java
POO - 22 - Tratamento de Exceções em Java
Ludimila Monjardim Casagrande
POO - 21 - Java e Banco de Dados
POO - 21 - Java e Banco de Dados
Ludimila Monjardim Casagrande
POO - 20 - Wrapper Classes
POO - 20 - Wrapper Classes
Ludimila Monjardim Casagrande
POO - 15 - Passagem de Argumentos
POO - 15 - Passagem de Argumentos
Ludimila Monjardim Casagrande
POO - 13 - Arrays em Java
POO - 13 - Arrays em Java
Ludimila Monjardim Casagrande
POO - 12 - A Classe Object
POO - 12 - A Classe Object
Ludimila Monjardim Casagrande
POO - 09 - Entradas e Saídas em Java
POO - 09 - Entradas e Saídas em Java
Ludimila Monjardim Casagrande
POO - 08 - Prática de Encapsulamento
POO - 08 - Prática de Encapsulamento
Ludimila Monjardim Casagrande
POO - 07 - Operadores do Java
POO - 07 - Operadores do Java
Ludimila Monjardim Casagrande
POO - 05 - Ambiente de Desenvolvimento
POO - 05 - Ambiente de Desenvolvimento
Ludimila Monjardim Casagrande
POO - 04 - Variávies em Java
POO - 04 - Variávies em Java
Ludimila Monjardim Casagrande
POO - 24 - Classes Básicas do Java - Datas
POO - 24 - Classes Básicas do Java - Datas
Ludimila Monjardim Casagrande
POO - 03 - Alocação de Memória em Java
POO - 03 - Alocação de Memória em Java
Ludimila Monjardim Casagrande
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
Ludimila Monjardim Casagrande
Mais de Ludimila Monjardim Casagrande
(16)
Gerenciamento Ágil de Projetos com Scrum
Gerenciamento Ágil de Projetos com Scrum
POO - 23 - Coleções da API do Java
POO - 23 - Coleções da API do Java
POO - 22 - Tratamento de Exceções em Java
POO - 22 - Tratamento de Exceções em Java
POO - 21 - Java e Banco de Dados
POO - 21 - Java e Banco de Dados
POO - 20 - Wrapper Classes
POO - 20 - Wrapper Classes
POO - 15 - Passagem de Argumentos
POO - 15 - Passagem de Argumentos
POO - 13 - Arrays em Java
POO - 13 - Arrays em Java
POO - 12 - A Classe Object
POO - 12 - A Classe Object
POO - 09 - Entradas e Saídas em Java
POO - 09 - Entradas e Saídas em Java
POO - 08 - Prática de Encapsulamento
POO - 08 - Prática de Encapsulamento
POO - 07 - Operadores do Java
POO - 07 - Operadores do Java
POO - 05 - Ambiente de Desenvolvimento
POO - 05 - Ambiente de Desenvolvimento
POO - 04 - Variávies em Java
POO - 04 - Variávies em Java
POO - 24 - Classes Básicas do Java - Datas
POO - 24 - Classes Básicas do Java - Datas
POO - 03 - Alocação de Memória em Java
POO - 03 - Alocação de Memória em Java
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
Último
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
Danilo Pinotti
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
2m Assessoria
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
LuisKitota
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
Danilo Pinotti
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
2m Assessoria
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
2m Assessoria
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
2m Assessoria
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
SamaraLunas
Último
(8)
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
POO - 16 - Polimorfismo
1.
Programação Orientada a
Objetos Polimorfismo e Classes Abstratas Ludimila Monjardim Casagrande 2012
2.
Polimorfismo e Herança
O mecanismo de herança permite a criação de classes a partir de outras já existentes desde que exista a relação “é um” entre a subclasse e a superclasse. Dessa forma é possível criar classes mais especializadas a partir de uma classe genérica. A relação “é um” entre classes também permite a existência de outra característica fundamental das linguagens OO que é o polimorfismo. Polimorfismo ©2012 Ludimila Monjardim Casagrande 2
3.
Polimorfismo e Herança
Uma Figura Geométrica Figura é uma generalização de múltiplas formas Quadrado é uma Círculo é uma Figura Geométrica Figura Geométrica Quadrado Círculo Polimorfismo ©2012 Ludimila Monjardim Casagrande 3
4.
Polimorfismo
Polimorfismo, que significa “múltiplas formas”, permite a manipulação de instâncias de classes que herdam de uma mesma classe ancestral de forma unificada: Assim, é possível escrever métodos que recebam instâncias de uma classe C, e os mesmos métodos serão capazes de processar instâncias de qualquer classe que herde de C, já que qualquer classe que herde de C “é um” C. Polimorfismo ©2012 Ludimila Monjardim Casagrande 4
5.
Exemplo de Polimorfismo
public class VetorFiguras{ private Figura[] figuras = new Figura[10]; private int totalDeElementos; public boolean contem(Figura fig) { boolean resultado = false; for(int i = 0; i < this.totalDeElementos; i++){ if(fig.equals(this.figuras[i])){ resultado = true; Quadrado q = new Quadrado(2.0); break; Circulo c = new Circulo(2.0); } } if(vetor.contem(q)) return resultado; ... } if(vetor.contem(c)) } ... Polimorfismo ©2012 Ludimila Monjardim Casagrande 5
6.
Exemplo de Polimorfismo
public class Vetor { private Object[ ] objetos = new Object[10]; private int totalDeElementos; public boolean contem(Object obj) { boolean resultado = false; for(int i = 0; i < this.totalDeElementos; i++){ if(obj.equals(this.objetos[i])){ resultado = true; break; } } return resultado; } } Polimorfismo ©2012 Ludimila Monjardim Casagrande 6
7.
Polimorfismo
Polimorfismo é o princípio pelo qual duas ou mais classes derivadas de uma mesma superclasse podem invocar métodos que têm a mesma identificação (assinatura) mas comportamentos distintos, especializados para cada classe derivada, usando para tanto uma referência a um objeto do tipo da superclasse. Polimorfismo ©2012 Ludimila Monjardim Casagrande 7
8.
Polimorfismo
Em outras palavras, polimorfismo é a capacidade de se enviar a mesma mensagem a objetos de classes diferentes, por meio de um mesmo tipo base comum a estes objetos. Polimorfismo ©2012 Ludimila Monjardim Casagrande 8
9.
Exemplo de Polimorfismo
public class Figura { public double calcularArea( ) { return 0; } } public class Quadrado extends Figura { Herança double lado; public Quadrado(double lado) { this.lado = lado; } public double calcularArea( ) { Sobreposição do método da double area = 0; superclasse area = lado * lado; return area; } } Polimorfismo ©2012 Ludimila Monjardim Casagrande 9
10.
Exemplo de Polimorfismo
public class Circulo extends Figura { Herança double raio; public Circulo (double raio) { this.raio = raio; } public double calcularArea( ) { Sobreposição do método da double area = 0; superclasse. area = 3.14 * raio * raio; return area; } } Polimorfismo ©2012 Ludimila Monjardim Casagrande 10
11.
Exemplo de Polimorfismo
public class Principal { public static void main(String[ ] args) { Figura f1 = new Quadrado(4); Figura f2 = new Circulo(2); System.out.println("Área da Figura 1 é: " Comportamento + f1.calcularArea( ) + "n" polimórfico. + "Área da Figura 2 é: " + f2.calcularArea( )); } Um mesmo tipo base Figura, por meio das variáveis f1 e f2, é utilizado } para enviar uma mesma mensagem calcularArea para objetos de tipos diferentes Quadrado e Circulo e o comportamento executado será distinto. Polimorfismo ©2012 Ludimila Monjardim Casagrande 11
12.
Exemplo de Polimorfismo
public class VetorFiguras { private Figura[] figuras = new Figura[10]; private int totalDeElementos; public double calcularAreaTotal() { double areaTotal = 0; for (int i = 0; i < figuras.length; i++) { if (figuras[i] != null) { areaTotal = areaTotal + figuras[i].calcularArea(); Comportamento } polimórfico. } return areaTotal; } } Polimorfismo ©2012 Ludimila Monjardim Casagrande 12
13.
Outro Exemplo
A fila de impressão FilaImpressao Documento armazena objetos imprime() genéricos do tipo Documento imprime() A mensagem transmitida é: imprima todos os Documentos da fila DocWord DocExcel DocPDF Cada tipo de documento conhece seus detalhes de imprime() imprime() imprime() impressão Polimorfismo ©2012 Ludimila Monjardim Casagrande 13
14.
Vantagens do Polimorfismo
Já vimos que o grande benefício do polimorfismo é permitir que vários objetos de um mesmo tipo base sejam tratados da mesma maneira. Uma outra vantagem é permitir aumentar um software de maneira mais controlada, mais localizada. Polimorfismo ©2012 Ludimila Monjardim Casagrande 14
15.
Vantagens do Polimorfismo
Considere o exemplo da fila de impressão. Se quisermos incrementar o software e permitir que novos tipos de documentos sejam impressos, a classe FilaImpressao não precisa ser alterada. Somente novas classes precisam ser criadas para implementar os novos tipos de documentos. Assim, o trabalho é menor e mais localizado, evitando que erros de programação sejam inseridos na classe FilaImpressao. Polimorfismo ©2012 Ludimila Monjardim Casagrande 15
16.
Classes Abstratas
Vimos no exemplo das classes de figuras geométricas, que a classe Figura implementa o método calcularArea, porém o método somente retorna 0 e não realiza nenhum cálculo. Isso foi feito para que a classe base Figura definisse o comportamento padrão para toda a hierarquia de classes de figuras geométricas, assim todos os objetos das classes derivadas podem ser tratados da mesma maneira (pelo polimorfismo). Polimorfismo ©2012 Ludimila Monjardim Casagrande 16
17.
Classes Abstratas
Uma outra maneira de implementar o comportamento padrão para toda uma hierarquia de classes é fazendo com que a classe base seja uma classe abstrata. Uma classe abstrata é uma classe que não pode ser instanciada, isto é, nenhum objeto daquela classe pode ser criado. Uma classe abstrata serve apenas para definir um comportamento comum que todas as classes derivadas devem seguir. Polimorfismo ©2012 Ludimila Monjardim Casagrande 17
18.
Classes Abstratas
Para alterar a classe Figura e torná-la abstrata, basta acrescentar a palavra-chave do Java abstract na sua declaração: public abstract class Figura { public double calcularArea( ) { return 0; } } Polimorfismo ©2012 Ludimila Monjardim Casagrande 18
19.
Classes Abstratas
Desse modo, nenhum objeto da classe Figura pode ser criado e a linha abaixo causará um erro de compilação: Figura f = new Figura( ); Polimorfismo ©2012 Ludimila Monjardim Casagrande 19
20.
Métodos Abstratos
O Java permite que métodos sejam definidos como abstratos e, portanto, sem nenhuma implementação. Para criar um método abstrato, usamos a palavra-chave abstract na assinatura do método e omitimos o seu corpo (já que não há implementação): public abstract class Figura { public abstract double calcularArea( ); } Polimorfismo ©2012 Ludimila Monjardim Casagrande 20
21.
Regras sobre Classes
Abstratas Toda classe derivada de uma classe abstrata deve obrigatoriamente implementar os métodos abstratos da superclasse, caso contrário, um erro de compilação é gerado. Uma classe que tenha um ou mais métodos abstratos deve ser obrigatoriamente definida como abstrata, caso contrário um erro de compilação é gerado. Polimorfismo ©2012 Ludimila Monjardim Casagrande 21
22.
Regras sobre Classes
Abstratas Uma classe abstrata pode conter métodos não abstratos, isto é, métodos com implementação. Se esses métodos não abstratos não forem definidos (sobrepostos) nas subclasses, então, quando um objeto da subclasse realizar a chamada a um desses métodos, o código contido na classe abstrata será executado (devido à herança). Polimorfismo ©2012 Ludimila Monjardim Casagrande 22
23.
Exemplo public
abstract class Figura { public abstract double calcularArea( ); public void imprimeArea( ) { System.out.println(calcularArea( )); } } public class Principal { public static void main(String[] args) { Quadrado q = new Quadrado(4); Circulo c = new Circulo(2); System.out.print("Área da Figura 1 é: "); q.imprimeArea( ); System.out.print("Área da Figura 2 é: "); c.imprimeArea( ); } } Polimorfismo ©2012 Ludimila Monjardim Casagrande 23
24.
Bibliografia Sugerida
Java: Como programar Autores: H. M. Deitel e P. J. Deitel Editora: Pearson – 6a Edição Complete Java 2 Certification Study Guide Sybex Polimorfismo ©2012 Ludimila Monjardim Casagrande 24
Baixar agora