Fluxo fechado e não reaberto - Java

Tenho uma tarefa fácil de fazer, mas encontrei um pequeno problema com o fechamento do fluxo de entrada. Simplificando, eu tenho que fazer um aplicativo de 'lista' de contatos em Java, apenas para usar o polimorfismo da maneira correta. Então, eu tenho uma classe Contact e uma subclasse Private (contact). Nas duas classes, existe um método de modificação para alterar o valor das variáveis.

public void modify() throws IOException {
    System.out.println("Previously name: " + name);
    System.out.println("Insert new name");
    try(InputStreamReader ir = new InputStreamReader(System.in);    
    BufferedReader in = new BufferedReader(ir) ) {  
        name= in.readLine();
        System.out.println("You've changed the name to: "+ name);                       
    System.out.println("Previously surname: " + surname);
    System.out.println("Insert new surname");
        surname= in.readLine();
        System.out.println("You've changed the surname to: "+ surname);                         
    System.out.println("Previously e-mail: " + email);
    System.out.println("Insert new e-mail");
        email = in.readLine();
        System.out.println("You've changed the e-mail to: "+ email);    }                   
}

Este é o método de contato que não cria problema

@Override 
public void modify() throws IOException {
    super.modifica();
    System.out.println("Numero di cellulare precedente: " + cell);
    System.out.println("Inserire nuovo numero");
    try (InputStreamReader ir = new InputStreamReader(System.in);   
    BufferedReader in = new BufferedReader(ir)) {
        cell = in.readLine();
        System.out.println("Hai cambiato il numero in: "+ cell);                        
    System.out.println("Contatto skype precedente: " + skype);
    System.out.println("Inserire nuovo contatto");
        skype = in.readLine();
        System.out.println("Hai cambiato il contatto in: "+ skype);                         
}   
}

Em vez disso, essa é a substituição do método em Privado. Em geral, eu crio um objeto Privado e chamo o método modify. Posso inserir nome, sobrenome e email sem problemas, e o método lança uma exceção de E / S porque o fluxo está fechado. Não consigo entender por que tenho esse tipo de problema. Eu acho que o fluxo é fechado por tentativa com recursos no primeiro código, mas depois é aberto no segundo código por outra tentativa com recursos. Provavelmente algo na minha ideia está errado.

questionAnswers(2)

yourAnswerToTheQuestion