Beruflich Dokumente
Kultur Dokumente
1. A pilha e a heap
2. Criando objetos
3. Herança
4. Exemplo de herança
A pilha e a heap
A Lição de anatomia do Dr. Tulp
Pilha A pilha e a heap
Onde as
coisas
residem Heap
Pilha
Pilha
Heap
Heap
Um monte de bicicletas
Tipos de variáveis
Declaradas dentro de
um método, inclusive
Locais como parâmetros do
método
Variáveis
Declaradas dentro de
uma classe, mas não
Instância dentro de um
método
Tipos de variáveis
São inicializadas
automaticamente
Na heap residem
os objetos e as
variáveis de
instância
Na pilha residem as
variáveis locais,
referências a objetos
e chamadas a
métodos
Heap
Criando objetos
A criação de Adão
Criando um
objeto de uma Ou criando
instanciando a
classe classe
nome da
new ( )
classe
lista de
argumentos
Criando bicicletas
As três etapas do
milagre da criação
pilha heap
Chamando um construtor
de outro
Classe filha
ou
Classe B Sub-classe Conforme os atributos
de visibilidade, a sub-
classe herda as
características da
super-classe
Herança – como descobrir ?
Classe A Classe B
B é sub-classe de A ?
isto é,
B estende A ?
Faça o teste:
B é uma A?
Herança
Classe A
Super-classes de
C
Classe B Classe G
Sub-classes de Classe C
C
Classe D
Classe F
Classe E
A classe Object
É a classe mãe de
todas as outras
classes em Java Object
Classe B
Classe C
Classe D
A classe Object
Por exemplo:
• getClass( )
• equals( )
• toString( )
Herança e visibilidade
Acesso
permitido
Sub-classe, outro
Não Não Sim Sim
pacote
Fora de sub-classe,
Não Não Não Sim
outro pacote
Herança – reutilização de campos
Classe A
Campo 1
...
Campo N
Classe B Classe D
Classe C
Herança – reutilização de campos
Campo 3
Podem ser criados campos novos,
inclusive com o mesmo nome. Nesse
caso campo correspondente da super-
classe é ocultado
Herança – reutilização de métodos
Classe A
Método 1
...
Método N
Classe B Classe D
Classe C
Herança – reutilização de métodos
Sub-classes precisam
implementar apenas
Classe A Método 1 aquilo que acrescentam
Método 2 à super-classe
Classe B
Método 4
Herança – sobrescrevendo/ocultando
Classe A Método 1
Método 2
Classe B
Método 2
Quando sobrescrever
métodos
Como derivar sub-classes ?
Classe
mãe
Pessoa
Classe Classe
filha filha
Estudante Professor
Declaração da
classe mãe
public class Pessoa{
public Pessoa(){
System.out.println(“Construtor, a partir
de Pessoa”);
nome = ""; endereco = "";
}
. . . .
}
Construtor de
public class Estudante extends Pessoa {
Estudante
public Estudante(){
System.out.println(“Construtor, a partir
de Estudante”);
}
. . . .
}
Chamadas aos construtores Criando
gilberto
um objeto da
public static main( String[] args ) {
classe
Estudante
Estudante gilberto = new Estudante();
System.out.println(“Construtor de Pessoa,
a partir de Estudante");
}
public Student() {
super.nome = “Gustavo”;
super.endereco = “Av. Getúlio Vargas, 300”;
Cocker
Chamando o main
O resultado do main
A classe Animal
Animal
tipo
cor
Animal( tipo, cor )
show( )
getCor( )
<nome> é um <raça>
Código da
classe
Cachorro
Chamadas ao
construtor da classe
mãe
Chamada ao método
show( ) da classe mãe
A subclasse Cocker Naturalmente a subclasse
Cocker herda da classe mãe,
Cachorro , os campos nome e
Cocker raça e herda da classe avó os
vacina campos tipo e cor
Chamada ao
construtor da classe
Cachorro
Chamada ao método
show( ) da classe
Cachorro
Exercício 1
Criar uma classe Pessoa com:
• Atributos:
– nome;
– endereço,;
– email;
– telefone
• Construtores:
– default;
– que receba nome e email;
– que receba nome, endereço, email e telefone (lembre-se que podemos
chamar outros construtores da própria classe através do this)
• Utilizar encapsulamento.
• Sobrescrever o método toString() que pertence a classe Object para
imprimir os dados no formato:
(Nome: xxx /n Email: xxx /n etc...)
• Criar classe com método main e instanciar 5 pessoas e imprimir as
instâncias
Exercício 2
Estender a classe Pessoa para duas outras classes
• PessoaFisica
– Possui o atributo CPF
• PessoaJuridica
– Possui o atributo CNPJ
• Sobrescrever o método toString() para imprimir
os dados adicionais alem dos da classe “mãe”
• Utilizar a super nos construtores das classes filhas
• Criar uma classe com método main e instanciar 3
pessoas de cada
Exercício 3
Nosso sistema possui uma classe chamada Manobrista
que possui um método chamado estacionar. Este
método recebe um objeto e realiza as seguintes
operações:
• acelerar;
• freiar;
• virar(direção);
• engatarMarcha(marcha);
Sabendo que osistema pode receber vários tipos de
veículos (carros, motos, caminhões, ônibus), crie uma
hierarquia de classes para resolver o problema do
manobrista.
Exercício 4