JAVA Herana ATAI 1 Herana n Mecanismo simples

  • Slides: 13
Download presentation
JAVA – Herança ATAI 1

JAVA – Herança ATAI 1

Herança n Mecanismo simples e poderoso do paradigma OO que permite que uma nova

Herança n Mecanismo simples e poderoso do paradigma OO que permite que uma nova classe seja descrita a partir de uma classe já existente. n Herança é um mecanismo que permite a uma classe herdar todo o comportamento e os atributos de outra classe 2

Conceitos da Herança n n Classe mãe: superclasse, classe base; Classe filha/filho: subclasse, classe

Conceitos da Herança n n 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. 3

Herança n Vantagens da herança q q q n A partilha de recursos leva

Herança n Vantagens da herança q q q n A partilha de recursos leva as ferramentas melhores e produtos mais lucrativos q n 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. 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. q diversos objectos que executam acções diferentes, mesmo possuindo a mesma origem. 4

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

Mecanismo de Herança Entre uma classe e a superclasse, é estabelecida uma relação de especialização que é n automaticamente implementada através de um mecanismo de herança. Este mecanismo automático de herança estabelece as seguintes propriedades entre uma n subclasse B e a 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. Classe A a herança não se aplica a variáveis e métodos de classe!. Classe B 5

Exemplo 1 Pessoa • 2 atributos • 2 operações ano. Escolar matricular estudar superclasse

Exemplo 1 Pessoa • 2 atributos • 2 operações ano. Escolar matricular estudar superclasse (mais genérica) Trabalhador categoria função trabalhar picar cartão subclasse (mais específica) • 3 atributos • 4 operações • 4 atributos • 4 operações especialização generalização Estudante nome endereço comer dormir 6

Hierarquia de Classes transporte terrestre carro aéreo avião OVNI carro luxo 7

Hierarquia de Classes transporte terrestre carro aéreo avião OVNI carro luxo 7

Herança Hierarquia de Classes peso é uma variável de instância que está presente em

Herança Hierarquia de Classes peso é uma variável de instância que está presente em todos os objectos criadas para as classes Animal, Mamífero, Ave e Réptil. Object Animal peso mover() Ave pardal = new Ave(); pardal. set. Peso(700); Mamífero comer() Ave Réptil mover() voar() nadar() Mamifero boi = new Mamifero(); boi. set. Peso(30000); boi. mover(); boi. voar(); //Erro! não existe 8

Definir a Subclasse n Forma geral: q class <nome-da-classe> extends Super. Class n é

Definir a Subclasse n Forma geral: q class <nome-da-classe> extends Super. Class n é permitido apenas uma superclasse q n cada classe possui exactamente uma superclasse q n não há herança múltipla em Java excepção: java. lang. Object caso não exista a cláusula extends, então, assume-se que a superclasse é Object. 9

Exemplo de Herança class Animal extends Object { int peso; void mover() { /*

Exemplo de Herança class Animal extends Object { int peso; void mover() { /* movimentação do animal */ } } class Mamifero extends Animal { void comer() } Sobreposição de método! class Ave extends Animal { void mover() {…} void voar() {…} } 10

Classe Object n A classe Object é uma classe que serve de superclasse para

Classe Object n A classe Object é uma classe que serve de superclasse para todas as classes existentes em Java. n 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. n A classe Object defina o método equals, que serve para testar se dois objectos contém a mesma informação (diferente do operador ==). n Como todas as classes são subclasses de Object, eles herdam o método equals. n Uma referência para Object pode ser usada como referência para qualquer outro objecto: q n Object obj = new Animal(); Para fazer qualquer coisa específica com um objecto, é necessário conhecer sua classe original e fazer type cast: q Animal obj. Animal = (Animal)obj; 11

Construtores de Subclasses class Ave extends Animal { int altura; class Animal { double

Construtores de Subclasses class Ave extends Animal { int altura; class Animal { double velocidade; Animal() { velocidade = 0. 0; } } void mover(double vel) { velocidade = vel; } Ave() { super(); // velocidade = 0. 0; altura = 0; } void mover (double vel) { if(altura >0) velocidade = vel; } void voar (int alt) { altura = alt; } } 12

O Construtor Padrão public Nome. Classe() { super(); } n As chamadas aos construtores

O Construtor Padrão public Nome. Classe() { super(); } n As chamadas aos construtores são encadeadas q 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. 13