Para o Java serializar objetos basta implementar a interface Serializable.
Diagrama

Implementação da classe
public class Dog implements Serializable {
private String nome;
public void makeSound() {
}
public String getNome() {
return this.nome;
}
public void setNome(String aNome) {
this.nome = aNome;
}
}
Serializando um objeto Dog
/* seralizando um objeto Dog */
Dog d = new Dog();
d.setNome("Rex");
System.out.println("Nome do cão 1: " + d.getNome());
try {
FileOutputStream fs = new FileOutputStream("c:/caes.dat");
ObjectOutputStream os = new ObjectOutputStream(fs);
os.writeObject(d);
os.close();
} catch (Exception ex) {
ex.printStackTrace();
}
/* desseralizando */
Dog d2 = new Dog();
try {
FileInputStream fi = new FileInputStream("c:/caes.dat");
ObjectInputStream oi = new ObjectInputStream(fi);
d2 = (Dog) oi.readObject();
oi.close();
} catch (Exception ex) {
ex.printStackTrace();
}
System.out.println("Nome do cão 2: " + d2.getNome());
Transient
Use transient para impedir que determinada propriedade seja serializada
class Demo implements Serializable {
String nome;
transient String senha; // esta não será salva
}
Observações
•Não esqueça de importar: java.io.Serializable;
•Ver sobre serialVersionUID para manter compatibilidade com versões mais novas do objeto
•É necessário que todas as classes da árvore da herança a serem serializadas devem implementar Serializable