Herença, declaração de variaveis e reescrita de método String Exibe() { }

2 respostas
J

Bom dia minha situação é a seguinte

Classe Pessoa {

public class Pessoa {
	private String nome;
	private int idade;
	private String cpf;
	private String endereco;
	
	Pessoa (String nome, String cpf){
	this.nome = nome;
	this.cpf = cpf;
	}

 //Outras propriedades da classe ocultadas 

	public String exibe() { 
		String a = "Bem vindo "+this.getNome()+" Seu CPF é o "+this.getCpf();
		return a;
	}

}
Classe PessoaFisica
public class PessoaFisica extends Pessoa {
    private String rg;
	PessoaFisica(String nome, String rg) {
		super(nome, rg);
		this.rg = rg;
		
	}
	public String exibe() { 
		String a = "Bem vindo "+this.getNome()+" Seu rg é o "+this.getRg();
		return a;
	}
	private String getRg() {
		return this.rg;
	}
	

}

e classe Pessoa Juridica

public class PessoaJuridica extends Pessoa {
    private String cnpj;
	PessoaJuridica(String nome, String cnpj) {
		super(nome, cnpj);
		this.cnpj = cnpj;
	}
	public String exibe() { 
		String a = "Bem vindo "+this.getNome()+" Seu CNPJ é o "+this.getCnpj();
		return a;
	}
	public String getCnpj(){
		return this.cnpj;
	}
	
	

}

1º - Gostaria de saber nesse caso se a melhor forma de trabalhar com o RG e o Cnpj seria declarando essas váriaveis dentro das extensões mesmo ou se seria melhor usar na própria classe Pessoa normal.

2º - O métodos EXIBE por ser string e alterar os getters utilizados tem que ser re-escrito da maneira que eu fiz, sei que da pra chamar o métodos original pelo super.nomedometodo() mas no exemplo que tive ele apenas adiciona um valor a uma conta efetuada, nesse caso por ser String fiquei em dúvida.

Obrigado.

2 Respostas

ViniGodoy

1 - Melhor usar as extensões. E, no caso, o CPF também é um dado de pessoa física (CPF é a sigla de Cadastro de Pessoa Física).

2 - Pode chamar o super. Veja exemplo abaixo.

public class Pessoa {
    private String nome;
    private int idade;
    private String endereco;
	
    public Pessoa(String nome){
        this.nome = nome;
    }

    //Outras propriedades da classe ocultadas 

    public String exibe() { 
        return "Bem vindo "+getNome();
    }
}
public class PessoaFisica extends Pessoa {
    private String cpf;
    private String rg;

    public PessoaFisica(String nome, String cpf, String rg) {
        super(nome);
        this.cpf = cpf;
        this.rg = rg;		
    }

    @Override
    public String exibe() { 
        return super.exibe() + " Seu cpf é " + getCpf() + " seu RG é " + getRg();
    }

    private String getRg() {
        return rg;
    }
    private String getCpf() {
        return cpf;
    }
}
J

Opa, valeu vini, fica melhor dessa forma que você passou amanha vou voltar a mecher no sistema e dou uma alterada, mas pelo que o pessoal do guj tbm me passou e ja li aqui na apostila vou deixar a classe pessoa como abstrata e tratar os tipos mesmos, obrigado pela ajuda.

Nem pensei em usar o super.exibe() concatenando coma mensagem inicial :(.

Criado 4 de junho de 2014
Ultima resposta 4 de jun. de 2014
Respostas 2
Participantes 2