Herança

Boa Tarde, segue abaixo uma duvida alguém consegue me ajudar?

tenho uma classe chamada PessoaFisica e outra chamada Funcionario.

a classe funcionário está assim

public class Funcionario extend PessoaFisica
{

}

tenho um objeto PessoaFisica já preenchido, como faço para igualar o objeto funcionário. para que funcionário fique preenchido igual pessoaFisica e no caso precise apenas preencher os dados que faz parte apenas de funcionário?

cheguei fazer isso mais da erro funcionario (Funcionario)pessoaFisica;

obrigado desde já!

Perceba que você tem um problema aí. No seu exemplo, o funcionário tem uma série de atributos herdados de pessoa física mas não seria mais simples o Funcionário ter seus próprios atributos?

Só quero enfatizar que, na minha opinião, você está usando a herança para aproveitamento de código e isso não é uma boa ideia, já escrevi sobre isso
aqui.

Se quiser continuar com sua abordagem, você terá que criar um objeto Funcionario sem passar pela criação de um objeto PessoaFisica pois não existe uma maneira de “promover” um objeto a uma subclasse. Apenas pense o seguinte: funcionário é necessariamente uma pessoa física? (Pode ser um estagiário, um prestador de serviços, um estrangeiro fazendo intercâmbio, etc.)

Se precisar de ajuda pra modelar seu exemplo, pode postar pra gente. Se for postar códigos, utilize a tag “code”. Exemplo:

public class Funcionario extend PessoaFisica
{

}
public abstract class Pessoa {

	private Long id;
	
	private String nome;
	
	private List<Telefone> telefones;

	private Endereco endereco;

}
public class PessoaFisica extends Pessoa {

	private String cpf;
	
	private Date dataNascimento;

	private Sexo sexo;
}
public class PessoaJuridica extends Pessoa{

	private String cnpj;

}
public class Funcionario extend PessoaFisica 
{ 

} 

[code]
public class Cliente {

private PessoaFisica pessoaFisica;

private PessoaJuridica pessoaJuridica;

}

As classes Pessoa, Pessoa Física e Pessoa Jurídica estão corretas?

seguindo sua orientação eu deveria fazer a classe funcionário seguindo o mesma ideia da classe cliente, correto?

Obrigado pela atenção desde já!

Não sei se é essa sua pergunta.
Mas você pode fazer assim:


public class Funcionario{

protected Long id;
protected String nome;
protected String cpf;

//métodos
}

public class Estagiario extends Funcionario{
protected Long matricula;

//métodos
}
public static void main(String[] args){

Estagiario est = new Estagiario;
est.nome = "Nome qualquer";
est.cpf = "CPF qualquer";
}

Quando você usa o private, apenas a classe pode usa-la, com o protected você da direito das classes filhas a usar os atributos da Classe pai.

joao0212 É recomendável o uso de encapsulamento, ou seja, getters e setters

Sim, claro!!
Usei o \métodos que ele poderia usar o encapsulamento, mas pra ele não ficar com dúvidas.

package testeheranca;

public class Funcionario {

    protected int id;
    protected String nome;
    protected String CPF;
}
package testeheranca;

public class Estagiario extends Funcionario{

    public Long getMatricula() {
        return matricula;
    }

    public void setMatricula(Long matricula) {
        this.matricula = matricula;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

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

    public String getCPF() {
        return CPF;
    }

    public void setCPF(String CPF) {
        this.CPF = CPF;
    }
    
    protected Long matricula;
    
}
package testeheranca;

public class TesteHeranca {

    public static void main(String[] args) {

        Estagiario est = new Estagiario();
        
        est.nome = "João";
        
        System.out.println("Nome do Estagiário: " +est.nome);
    }
    
}