Iniciante - Definir um objeto como tipo de classe

Olá Pessoal, estou começando no Java SE OO.
Tenho uma dúvida básica, como faço pra definir que um objeto é do tipo de uma classe ?
Detalhes:

Segue abaixo o diagrama de classes.

Observamos que temos uma superclasse pessoa, e que vendedor e cliente são heranças (extens atributos e métoidos).

A minha dúvida é como eu faço pra definir que pessoa1 é um vendedor, e pessoa2 é um cliente ?
E também se a pessoa for vendedor e/ou cliente apenas executar seus métodos.

Veja os código (detalhe sou iniciante se tiver alguma coisa errada, avisa-me)

SuperMercado.java - Principal

package supermercado;

public class SuperMercado {
    public static void main(String[] args) {
           //Como eu faço pra criar um objeto Pessoa e seu tipo()vendedor ou cliente  ? 
    }
}

Pessoa.java

[code]package supermercado;

public class Pessoa {
public String NomeCompleto,Nacionalidade,UF,Sexo,DocumentoIdentidade,Profissao,Endereco,Cidade,Estado,Email;
public int DataNascimento,CPF,Numero,CEP,Telefone;
}[/code]

Vendedor.java

[code]package supermercado;

public class Vendedor extends Pessoa{
private int idVendedor;
private String Setor;
void Vendedor (){
System.out.println("\nVendedor !");//Coloquei esse método apenas pra testar na Principal.java se a Pessoa X é um Vendedor();
}
}
[/code]

Cliente.java

[code]package supermercado;

public class Cliente extends Pessoa{
private int idCliente;
private String Compras;
void Cliente (){
System.out.println("\nCliente ! "); //Coloquei esse método apenas pra testar na Principal.java se a Pessoa X é um Cliente();
}
}
[/code]


OK É isso, obrigado a todos! :wink:

Cliente cliente = new Cliente();

Temos um cliente ! :slight_smile:
A diferença é que como ele é filho da classe Pessoa, terá acesso aos recursos que lhe são acessíveis por herança, obviamente (private, por exemplo, não é acessível a ninguém fora da classe).

Era isso?

exemplo:

[code]void inserirPessoa(Pessoa pessoa){

if(pessoa instance of Vendedor){
//é um vendedor…
}
else if(pessoa instance of Cliente){
//é um cliente
}

}[/code]

na hora de criar Cliente ou Vendedor você faz assim:

Pessoa Vendedor = new Vendedor();
Pessoa Cliente = new Cliente();

você usa o instance of para saber qual a classe do objeto

era essa sua dúvida ?

[quote=nel]Cliente cliente = new Cliente();

Temos um cliente ! :slight_smile:
A diferença é que como ele é filho da classe Pessoa, terá acesso aos recursos que lhe são acessíveis por herança, obviamente (private, por exemplo, não é acessível a ninguém fora da classe).

Era isso?[/quote]
Obrigado amigo !

[quote=douglaskd]exemplo:

[code]void inserirPessoa(Pessoa pessoa){

if(pessoa instance of Vendedor){
//é um vendedor…
}
else if(pessoa instance of Cliente){
//é um cliente
}

}[/code]

na hora de criar Cliente ou Vendedor você faz assim:

Pessoa Vendedor = new Vendedor();
Pessoa Cliente = new Cliente();

você usa o instance of para saber qual a classe do objeto

era essa sua dúvida ?[/quote]
Também funcionou amigo !
Obrigado ! Abraço :smiley:

@bustamante

Voce pode fazer assim usando Get e Set.


package Supermercado;

public class SuperMercado {

	public static void main(String[] args) {
	
		//Declarando meu objeto Pessoa1
		Vendedor pessoa1 = new Vendedor();
		
		//Atribuindo os valores para a classe Vendedor extends Pessoa
		pessoa1.setIdVendedor(999);
		pessoa1.setSetor("Departamento de Vendas");
		
		//Atribuindo os valores para a classe Pessoa
		pessoa1.setNomeCompleto("João das Couves");
		pessoa1.setNacionalidade("Brasileira");
		pessoa1.setUf("DF");
		
		
		//Declarando meu objeto Pessoa2
		Cliente pessoa2 = new Cliente();
				
		//Atribuindo os valores para a classe Cliente extends Pessoa
		pessoa2.setIdCliente(45455);
		pessoa2.setCompras("151225");
				
		//Atribuindo os valores para a classe Pessoa
		pessoa2.setNomeCompleto("João das Couves");
		pessoa2.setNacionalidade("Brasileira");
		pessoa2.setUf("DF");	

	}

}

[quote=wanborpes]@bustamante

Voce pode fazer assim usando Get e Set.


package Supermercado;

public class SuperMercado {

	public static void main(String[] args) {
	
		//Declarando meu objeto Pessoa1
		Vendedor pessoa1 = new Vendedor();
		
		//Atribuindo os valores para a classe Vendedor extends Pessoa
		pessoa1.setIdVendedor(999);
		pessoa1.setSetor("Departamento de Vendas");
		
		//Atribuindo os valores para a classe Pessoa
		pessoa1.setNomeCompleto("João das Couves");
		pessoa1.setNacionalidade("Brasileira");
		pessoa1.setUf("DF");
		
		
		//Declarando meu objeto Pessoa2
		Cliente pessoa2 = new Cliente();
				
		//Atribuindo os valores para a classe Cliente extends Pessoa
		pessoa2.setIdCliente(45455);
		pessoa2.setCompras("151225");
				
		//Atribuindo os valores para a classe Pessoa
		pessoa2.setNomeCompleto("João das Couves");
		pessoa2.setNacionalidade("Brasileira");
		pessoa2.setUf("DF");	

	}

}

[/quote]

Tudo bem amigo esse é uma boa !
obrigado!

Só uma dúvida.

Você criou void Cliente() e void Vendedor() como métodos ou como construtores?

Porque se criou com a intenção de serem construtores, eles não vão ser, pois construtores não possuem retorno, e void é um tipo de retorno.

Caso queria criar construtores, utilize(ou não) um modificador de acesso (public, private, protected, ou nenhum para indicar default/package) seguido pelo nome da classe

public Cliente() {
//código
}

se fizer

public void Cliente() {
//código
}

Você, na verdade, está definindo um método com o mesmo nome da classe, e não um construtor

Eu fiz na maneira correta usando pra ser um construtor
mesmo assim, obrigado abraço!