Questao da certificação SCJP 1.5

import java.io.*;
class Player { 
  Player() { System.out.print("p"); }
}
class CardPlayer extends Player implements Serializable {
  CardPlayer() { System.out.print("c"); }
  public static void main(String[] args) {
    CardPlayer c1 = new CardPlayer();
    try {
      FileOutputStream fos = new FileOutputStream("play.txt");
      ObjectOutputStream os = new ObjectOutputStream(fos);
      os.writeObject(c1);
      os.close();
      FileInputStream fis = new FileInputStream("play.txt");
      ObjectInputStream is = new ObjectInputStream(fis);
      CardPlayer c2 = (CardPlayer) is.readObject();
      is.close();
    } catch (Exception x ) { }
  }
}

Qual e o retorno??

Acredito que a saida seja “pcp”. Quando vc da um CardPlayer c1 = new CardPlayer(); ele chama o construtor da superclasse, que imprime “p”, depois o seu proprio construtor que imprime “c”. A superclasse não implementa a interface Serializable, portanto quando vc deserializa, ele chama o construtor da superclasse, imprimindo mais uma vez a string “p”.

Vlw :grin: