extendsé usado para indicar herança em JAVA

Documentos relacionados
A B Classe Genérica D A C. Classe Especializada. Classe Especializada. Características Herdadas

Herança; Sobrescrita, Sobrecarga e Polimorfismo; Classes abstratas e concretas (finais).

Classe Abstrata e Interface

Herança e Polimorfismo

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Programação Orientada a Objetos Flávio de Oliveira Silva 144

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

Herança. Prof. Fernando V. Paulovich 23 de agosto de 2010

Programação Java (nível intermediário) 4. Polimorfismo

Classes e Objetos. Sintaxe de classe em Java

Herança. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

Programação por Objectos. Java

Linguagem de Programação III

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -

4 Conceito de Herança

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM

POO29004 Programação Orientada a Objetos

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

Ex: carro_desportivo poderá ser uma subclasse de automóvel (carro_desportivo é_um automóvel)

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

Herança e Propriedades

Universidade da Beira Interior Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

Conceitos de Programação Orientada a Objetos

POO29004 Programação Orientada a Objetos

Polimorfismo. O que é polimorfismo?

Herança. Herança. Herança. Herança. Herança. Programação Orientada a Objetos

Computação II - Java - Teste 1.2 Prof. Adriano Joaquim de Oliveira Cruz 2015/04/27

Aula 9 Herança. Prof. Jefersson Alex dos Santos

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

package heranca; class Mamifero { public int a; protected int b; int c; private int d;

Lição 11 Herança, polimorfismo e interfaces

LÓGICA DE PROGRAMAÇÃO (JAVA) HERANÇA. Professor Carlos Muniz

Introdução à orientação a objetos. João Tito Almeida Vianna 18/05/2013

Java para Desktop. Programação Orientada à Objetos 2 JSE

Desenvolvimento Web TCC Turma A-1

Encapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos

Linguagem de Programação. Diagrama de classes

Vejamos o seguinte exemplo public class Exemplo private int testada = 20; public void testapalavra(int testada) JOptionPane.showMessageDialog(null,"Pa

Introdução ao Java. Prof. Herbert Rausch Fernandes

POO29004 Programação Orientada a Objetos

Nome do Aluno: Matrícula: Turma: Data: 08/04/2013

Interfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

Polimorfismo e Ligação Dinâmica. Alcides Pamplona Polimorfismo e Ligação Dinâmica

Programação Orientada a Objetos com Java. Prof. Júlio Machado

Introdução. Atributos em Java. Atributos. Acesso à atributos em Java. Atributo versus variável. Atributos, métodos e encapsulamento.

POO UML e Outros Conceitos. Prof. Vicente Paulo de Camargo

Linguagens de Programação Aula 12

Python Orientação a Objetos. Introdução à Programação SI2

Programação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos

Programação Java. - Herança e Polimorfismo - Marco Fagundes Marco Fagundes -

Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces

Laboratório de programação II

AULA TEÓRICA 9. Tema 8. Herança (continuação) Ø Sobreposição de métodos. Ø Variáveis e métodos estáticos. Ø Hierarquia de classes.

Computação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz /05/13. Questão: Total Pontos: Gráu:

Definição. Em POO, a abstração é o processo de esconder os detalhes de implementação de uma aplicação.

Interfaces POO. Prof. Marcio Delamaro

Notas de Aula 04: Herança e polimorfismo.

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Rafael B. Pereira (

Notas de Aula 05: Diretivas de atributos, métodos e classes e o uso de Interfaces.

AULA 16 HERANÇA. Disciplina: Programação Orientada a Objetos Professora: Alba Lopes

Programação Orientada a Objetos Classes Abstratas. Sérgio Soares

Polimorfismo. PARTE II: Java e OO. Polimorfismo. Polimorfismo. Polimorfismo. Polimorfismo

PROGRAMAÇÃO ORIENTADA A

Programação Orientada a Objetos. SANTOS, Rafael (PLT) e Guia de Estudo SCJP. SIERRA, Kathy e BATES, Bert

Programação Orientada a Objetos II

Linguagem de Programação II Implementação

Rafael B. Pereira (

5 Reuso de Classes. Desenvolvimento OO com Java. Vítor E. Silva Souza

Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento

6 Polimorfismo. Desenvolvimento OO com Java. Vítor E. Silva Souza ~ vitorsouza

Transcrição:

Herança e Polimorfismo Prof. Bruno Gomes bruno.gomes@ifrn.edu.br Programação Orientada a Objetos

Revisando extendsé usado para indicar herança em JAVA class ClasseA{ protected int a; public int geta() { return a; public void seta(int a) { this.a = a; class ClasseB extends ClasseA{ private int b; public int getb() { return b; public void setb(int b) { this.b = b;

Revisando public static void main(string args[]) { ClasseAa = newclassea(); ClasseBb = newclasseb(); a.seta(10); b.seta(20); b.setb(30); System.out.println(a.getA()); System.out.println(b.getB()); System.out.println(b.getA()); Método herdado de ClasseA Todos os membros definidos em ClasseA também existem em ClasseB

Revisando Uma classe que herda de outra é um subtipo Podemos ter uma variável do tipo ClasseAque referencia um objeto do tipo ClasseB variável b NÃO executa métodos de ClasseB, pois ela só conhece a interface de ClasseA ClasseA a,b; a = newclassea(); b = newclasseb(); a.seta(10); b.seta(20); //b.setb(30); System.out.println(a.getA()+b.getA());

Revisando Operador instanceof Determina se um objeto objé de uma classe Cla public static void main(string args[]){ ClasseA obj; obj= newclassec(); if(obj instanceof ClasseA) System.out.println("obj é ClasseA"); if(obj instanceof ClasseB) System.out.println("obj é ClasseB"); if(obj instanceof ClasseC) System.out.println("obj é ClasseC"); objé da ClasseA e da ClasseC

Revisando Toda classe JAVA tem pelo menos um construtor Todo construtor deve chamar o construtor da superclasse Deve ser o primeiro comando do construtor Compilador coloca código caso o programador não coloque class ClasseD extends ClasseA{ public ClasseD(){ super(); /*...*/ class ClasseD extends ClasseA{ public ClasseD(){ /*...*/

Revisando Acessando Construtores da superclasse: Utilizar super(); class ClasseA{ private int a; class ClasseB extends ClasseA{ private int b; public ClasseA(int a){ this.a=a; public ClasseB(int a, int b){ super(a); this.b=b; public int geta() { return a; public void seta(int a) { this.a = a; public int getb() { return b; public void setb(int b) { this.b = b;

Sobrescrita Podemos redefinir um método na subclasse Sobrescrita do método Muda comportamento definido na superclasse class ClasseB extends ClasseA{ private int b; public int getb() { return b; public void setb(int b) { this.b = b; public void seta(int a) { this.a = a+b; ClasseBb = newclasseb(); b.setb(10); b.seta(10); System.out.println(b.getA()); Valor impresso será 20

Sobrescrita É possível chamar o método da superclasse Palavra super super.metodo(); Pode ser usado em qualquer método Podemos sobrescrever o método para adicionar funcionalidade, mantendo a funcionalidade existente class Superclasse{ /*...*/ public void metodo(int x){ /*... */ /*... */ class Subclasse extends Superclasse{ public void metodo(int x){ /*... */ super.metodo(10); /*... */

Polimorfismo Muda comportamento Método executado depende da classe do objeto Mesma chamada executa métodos diferentes obj.metodo() vai executar método que foi definido para classe do objeto referenciado por obj Permite executar métodos de subclasses mesmo sem conhecê-las Usado junto com sobrescrita

Polimorfismo Classe1 a, b, c, d; a = newclasse1(); b = newclasse2(); c = newclasse3(); d = newclasse4(); System.out.println(a.m()); System.out.println(b.m()); System.out.println(c.m()); System.out.println(d.m()); class Classe1 { public String m() { return"classe1"; class Classe2 extends Classe1 { public String m() { return"classe2"; class Classe3 extends Classe1 { public String m() { return"classe3"; class Classe4 extends Classe2 { public String m() { return"classe4";

Classes Abstratas Não podem ser instanciadas Usadas com herança Definir superclasse com características e comportamento comuns e cada subclasse implementa suas especificidades Não existem animais da classe mamífero, apenas de suas subclasses Palavra abstract antes do nome da classe public abstract class Mamifero{ /*... */

Métodos Abstratos Métodos podem ser abstratos Não possuem implementação Devem ser implementados pelas subclasses Ou estas também serão abstratas Se uma classe possuir pelo menos um método abstrato, ela deve ser abstrata Classes abstratas podem ter métodos implementados public abstract class Mamifero{ public abstract String metodo(); Não possui implementação

Classes finais Não podem ser herdadas Não possuem subclasses Não podem ser abstratas Por conseqüência, não possuem métodos abstratos Palavra final antes de class public final class Gato{ /*... */

Exercício em Sala 2 Implementar as classes do seguinte diagrama: Detalhes no próximo slide

Exercício em Sala 2 Detalhes: Classe Pessoa e seu método realizarpagamento são abstratos; Atributo contatos[]é do tipo String e corresponde a um Arrayde 3 posições; Atributo impostocorresponde a uma porcentagem que será diminuída sobre o valorpagamento(10% para PF e 20% para PJ Estes valores devem ser inicializados no construtor da classe); O método realizarpagamentoretorna o valor do pagamento diminuído da porcentagem do imposto;