Acesso a objetos criados por metodos

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
}

}[/code]

Mas tem que ver se algo assim faria sentido.

Eu pensei em criar uma lista no final do metodo

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);

Isso pode resolver seu problema do acesso, mas você precisa ver se realmente faz sentido o Diretor ter uma lista de Secretario.

Nesse caso não faz sentido, porque o diretor vai ter apenas um secretário, tem algum jeito mais simples de fazer?

[code]class Diretor extends Pessoa {

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.