1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Acessar métodos específicos sem casting de objetos.

Olá a todos, me surgiu uma dúvida sobre herança no Java:

como acessar os métodos específicos de uma classe sem realizar o casting. Por exemplo, tenho uma classe Pessoa com apenas um método 'getNome()' (apenas para exemplo). Sabendo que uma pessoa poderá ser Juridica ou Física e que estende de Pessoa, ela poderá conter alguns métodos específicos, como getCPF() para a PessoaFisica e getCNPJ() para PessoaJuridica.

public class Pessoa{
    private String nome;

    public void setNome(String nome){ this.nome = nome; }
    public String getNome(){ return this.nome; }
}

public class PessoaFisica extends Pessoa{
    private String cpf;

    //get e set para cpf
}

public class PessoaJuridica extends Pessoa{
    private String cnpj;

    //get-set cnpj
}

Sei que pode-se fazer um método específico para ambos, por exemplo, getDocumento(); ou até mesmo criar um padrão Strategy. Mas supondo que nada disso esteja acontecendo (pois cada caso é um caso), se eu fizer o seguinte código:

Pessoa pFisica = new PessoaFisica();
pFisica.getCpf();

Simplesmente não irá achar o método getCpf, pois é um tipo PessoaFisica, porém, a instância é de Pessoa.

Se eu realizar o casting:

Pessoa pFisica = new PessoaFisica();
((PessoaFisica) pFisica).getCpf();

Isso irá funcionar. Mas teria como evitar esse Casting toda vez que for realizar a chamada de um método específico de uma classe que herda de outra classe?

Obrigado.

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

3 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags java herança casting ou faça a sua própria pergunta.