[OCPJP6] 014 – Orientação a objetos

Iniciando com sobrecarga

Diferentemente da sobrescrita, na sobrecarga o compilador olha para a referência da variável e não a sua instância. Como assim? Referência ou instância?

No post [009] comentei sobre variáveis primitivas e de referência e deixei para descrever um pouco mais sobre herança e polimorfismo mais pra frente, e no post [012] o assunto polimorfismo apareceu como uma das coisas mais belas na orientação a objetos e agora vamos entender o que é referência e instância antes de começar com sobrecarga 🙂

// Lembra disso?
SerVivo cachorro = new Cachorro();

No exemplo acima SerVivo é a referência e Cachorro é a instância da variável.

Agora que estamos entendidos o que você acha que acontecerá no código abaixo?

package certificacao;
public class MainSobrecarga {
    public static void main(String[] args) {
        MainSobrecarga ei = new MainSobrecarga();
        Homem duvida = new Menino();
        ei.mostraMinha(duvida);
    }
    public void mostraMinha(Homem h) {
        System.out.println("homem"); }
    public void mostraMinha(Menino m) {
        System.out.println("menino"); }
}

homem ou menino?

homem é a resposta correta! O compilador vai interpretar a referência da variável e utilizar o método mostraMinha(Homem) 🙂

Mais e mais…

  • Sobrecarga de construtores (em breve)
  • E mais… Para o próximo tema “Atribuições”

Comentem, estendam o assunto… Compartilhem =)

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s