JAVA – Herança

13
1 JAVA – Herança ATAI

description

JAVA – Herança. ATAI. Herança. Mecanismo simples e poderoso do paradigma OO que permite que uma nova classe seja descrita a partir de uma classe já existente. Herança é um mecanismo que permite a uma classe herdar todo o comportamento e os atributos de outra classe. - PowerPoint PPT Presentation

Transcript of JAVA – Herança

Page 1: JAVA – Herança

1

JAVA – Herança

ATAI

Page 2: JAVA – Herança

2

Herança

Mecanismo simples e poderoso do paradigma OO que permite que uma nova classe seja descrita a partir de uma classe já existente.

Herança é um mecanismo que permite a uma classe herdar todo o comportamento e os atributos de outra classe

Page 3: JAVA – Herança

3

Conceitos da Herança

Classe mãe: superclasse, classe base; Classe filha/filho: subclasse, classe derivada;

Classe filha (mais específica) herda atributos e métodos da classe mãe (mais geral);

Classe filha possui atributos e métodos próprios.

Page 4: JAVA – Herança

4

Herança

Vantagens da herança Modificação de uma classe (inserção de novos métodos e

variáveis) sem mudanças na classe original. Reutilização do código. Alteração do comportamento de uma classe.

A partilha de recursos leva as ferramentas melhores e produtos mais lucrativos não é necessário reinventar a roda a cada nova aplicação.

É possível modificar uma classe para criar uma nova classe com uma personalidade ligeiramente diferente. diversos objectos que executam acções diferentes, mesmo

possuindo a mesma origem.

Page 5: JAVA – Herança

5

Mecanismo de Herança Entre uma classe e a sua superclasse, é estabelecida uma relação de especialização que é

automaticamente implementada através de um mecanismo de herança.

Este mecanismo automático de herança estabelece as seguintes propriedades entre uma

subclasse B e a sua superclasse A:

1. B herda de A todas as variáveis e métodos de instância (os atributos da classe B,

declarados como private em A , só podem ter acesso pelos métodos public de A, e

não directamente)

2. B pode definir novas variáveis e novos métodos próprios.

3. B pode redefinir variáveis e métodos herdados.

a herança não se aplica a variáveis e métodos de classe!

.

Classe A

Classe B

Page 6: JAVA – Herança

6

Exemplo 1Pessoa

nomeendereçocomerdormir

EstudanteanoEscolar

matricularestudar

Trabalhadorcategoriafunçãotrabalharpicar cartão

superclasse(mais genérica)

subclasse(mais específica)

subclasse(mais específica)

generalização especialização

•2 atributos•2 operações

•3 atributos•4 operações

•4 atributos•4 operações

Page 7: JAVA – Herança

7

Hierarquia de Classes

transporte

terrestre aéreo

carro avião OVNI

carro luxo

Page 8: JAVA – Herança

8

Herança Hierarquia de Classes

Animal pesomover()

Avemover()

voar()

Mamífero comer()

Réptilmover()

nadar()

Objectpeso é uma variável de instância que está presente em todos os objectos criadas para as classes Animal, Mamífero, Ave e Réptil.

Ave pardal = new Ave();pardal.setPeso(700);

Mamifero boi = new Mamifero();boi.setPeso(30000);boi.mover();boi.voar(); //Erro! não existe

Page 9: JAVA – Herança

9

Definir a Subclasse

Forma geral: class <nome-da-classe> extends SuperClass

é permitido apenas uma superclasse não há herança múltipla em Java

cada classe possui exactamente uma superclasse excepção: java.lang.Object

caso não exista a cláusula extends, então, assume-se que a superclasse é Object.

Page 10: JAVA – Herança

10

Exemplo de Herança

class Animal extends Object { int peso; void mover() { /* movimentação do animal */ }}

class Mamifero extends Animal { void comer()}

class Ave extends Animal{ void mover() {…} void voar() {…}}

Sobreposiçãode método!

Page 11: JAVA – Herança

11

Classe Object A classe Object é uma classe que serve de superclasse para todas as classes

existentes em Java. Ao criar uma classe, se não for especificada nenhuma superclasse após a

palavra extends, então a classe Object será assumida automaticamente como superclasse.

A classe Object defina o método equals, que serve para testar se dois objectos contém a mesma informação (diferente do operador ==).

Como todas as classes são subclasses de Object, eles herdam o método equals.

Uma referência para Object pode ser usada como referência para qualquer outro objecto: Object obj = new Animal();

Para fazer qualquer coisa específica com um objecto, é necessário conhecer sua classe original e fazer type cast: Animal objAnimal = (Animal)obj;

Page 12: JAVA – Herança

12

Construtores de Subclasses

class Animal { double velocidade;

Animal() { velocidade = 0.0; }

void mover(double vel) { velocidade = vel; }}

class Ave extends Animal { int altura; Ave() { super(); // velocidade = 0.0; altura = 0; }

void mover (double vel) { if(altura >0) velocidade = vel; }

void voar (int alt) { altura = alt; }}

Page 13: JAVA – Herança

13

O Construtor Padrão

public NomeClasse() { super(); }

As chamadas aos construtores são encadeadas sempre que um objecto for criado, uma sequência de

métodos construtores serão invocados, da subclasse para a superclasse, e assim sucessivamente até atingir a classe Object.