You are on page 1of 19

1

Desenvolvimento Orientado a Objetos

Programação Orientada a Objetos

Prof. Evandro César Freiberger


Herança de Classes 2

• Capacidade de definir uma classe a partir de outra classe já


existente

• No java não é possivel definir classes a partir do "zero"


Assim:

public class Retangulo


{
}

É equivalente a:
public class Retangulo extends Object
{
}

Prof. Evandro César Freiberger


Herança de Implementação 3

• Quando não é inserido uma classe base, o compilador considera


a herança da classe Object, que é a classe base de todas as
classes do java

• Em java uma subclasse possui somente uma superclasse

Superclasse

Subclasse

Prof. Evandro César Freiberger


Herança de Implementação 4

Prof. Evandro César Freiberger


Herança de Implementação 5

Prof. Evandro César Freiberger


Herança de Implementação 6

Prof. Evandro César Freiberger


Herança de Implementação 7

Prof. Evandro César Freiberger


Herança de Implementação 8

Modificador de escopo
protected permite que as
subclasses e classes do mesmo
pacote tenha acesso ao
membro

Método da classe Object


sobrescrito nessa classe para
particularizar um
comportamento

Prof. Evandro César Freiberger


Herança de Implementação 9

Chama o construtor da
superclasse

Métodos a classe Ponto2D


sobrescritos nessa classe
para particularizar um
comportamento

Chama um método da
superclasse com mesmo
nome de um dos seus
métodos

Prof. Evandro César Freiberger


Herança de Implementação 10

Prof. Evandro César Freiberger


Classes Abstratas 11

• Para uma classe ser considera abstrata é necessário que ela possua pelo
menos um método abstrato
• Uma classe abstrata estabelece uma base para uma hierarquia de classes

Prof. Evandro César Freiberger


Classes Abstratas 12

• Classes abstratas não podem ser instanciadas, provoca um erro de


compilação:
Forma is abstract; cannot be instantiated Forma forma = new Forma();

Prof. Evandro César Freiberger


Classes Abstratas 13

A tentativa de compilar uma classe não


abstrata sem sobrescrever os métodos
abstratos também provoca erro.

Ponto2D is not abstract and does not


override abstract method volume() in
Forma

Prof. Evandro César Freiberger


Classes Abstratas 14

Sobrescreve os métodos
abstratos, tornando-os
métodos concretos

Prof. Evandro César Freiberger


Classes Abstratas 15

Prof. Evandro César Freiberger


Polimorfismo 16

• Capacidade de resolver chamadas de


métodos de instâncias de classes
diferentes em tempo de execução

• Objetos de instâncias diferentes com


mesmas assinaturas de métodos
provocam comportamento diferentes

Prof. Evandro César Freiberger


Polimorfismo 17

Prof. Evandro César Freiberger


Polimorfismo 18

Prof. Evandro César Freiberger


Polimorfismo 19

Prof. Evandro César Freiberger

You might also like