Tenho uma duvida bastante simples, eu tenho uma classe Diretor, uma Secretário quem ambas herdam dados da classe pessoa, dentro da classe diretor vai ter um método que cadastra o secretario e outro método que edita o secretario, como posso editar o objeto secretario(que foi criado apatir do metodo contido na classe diretor) ??
[code]
public class Pessoa
{
protected String nome;
protected String endereço;
protected String cpf;
protected String data_nascimento;
}
class Secretario extends Pessoa {
}
class Diretor extends Pessoa {
public void cadastrarSecretario()
{
Scanner sc = new Scanner(System.in);
Secretario secretario = new Secretario();
System.out.println("Digite o nome do secretário");
secretario.nome=sc.nextLine();
System.out.println("Digite o cpf do secretário");
secretario.cpf=sc.nextLine();
System.out.println("Digite o endereço do secretário");
secretario.endereço=sc.nextLine();
System.out.println("Digite a data de nascimento do secretário");
secretario.data_nascimento=sc.next();
}
public void editarSecretario()
{
// quero basicamente acessar os dados que foram criados no metodo cadastrarSecretario
if(Secretario==null){
System.out.println("secretario n cadastrado"); }
}[/code]
Não tem como… se você declara uma variável dentro do escopo de um método, ao final da execução do mesmo ela é “eliminada”. você não tem mais referências à ela.
Você precisa ou criar o objeto antes e enviar como parâmetro, ou persistir o objeto em um BD ou um arquivo talvez.
EDIT: Ou usar atributos da classe… ex:
[code]class Diretor extends Pessoa {
private Secretario secretario;
public void cadastrarSecretario(){
//aqui você usa o objeto que tem na sua classe, que está fora do escopo do método
}
public void cadastrarSecretario(){
List <Secretario> lista_secretario = new ArrayList<Secretario>();
Scanner sc = new Scanner(System.in);
Secretario secretario = new Secretario();
System.out.println("Digite o nome do secretário");
secretario.nome=sc.nextLine();
System.out.println("Digite o cpf do secretário");
secretario.cpf=sc.nextLine();
System.out.println("Digite o endereço do secretário");
secretario.endereço=sc.nextLine();
System.out.println("Digite a data de nascimento do secretário");
secretario.data_nascimento=sc.next();
lista_secretario.add(secretario);
private secretario; // Assim ele fica fora do escopo do método
public void cadastrarSecretario(){
Scanner sc = new Scanner(System.in);
secretario = new Secretario(); // usa a referência do atributo da classe
System.out.println("Digite o nome do secretário");
secretario.nome=sc.nextLine();
System.out.println("Digite o cpf do secretário");
secretario.cpf=sc.nextLine();
System.out.println("Digite o endereço do secretário");
secretario.endereço=sc.nextLine();
System.out.println("Digite a data de nascimento do secretário");
secretario.data_nascimento=sc.next();
}
// Continuação da classe
}[/code]Adicione um atributo Secretario na própria classe.