Toda clase que implemente esta interfaz puede transformar sus objetos a cadenas de bytes y viceversa.Para ello utilizamos las clases del paquete java.io writeObject y readObject.
Hay clases que no se pueden serializar porque sus datos están cambiando constantemente como java.io.FileInputStream y java.lang.Thread.Tenemos que tener cuidado a a hora de serializar un objeto, si este contiene una referencia a un elemento no-serializable,fallaría y se lanzaría la excepción NotSerializableException.
Cuando pasamos objetos Serializable de un lado a otro podemos tener el problema de que la versión de un lado tenga una versión más antigua que en el otro lado. Si sucede esto, la reconstrucción de la clase en el lado que recibe es imposible.Para evitar este problema se aconseja que la clase serializable tenga el atributo privado serialVersionUID. Así java es capaz de detectar rápidamente que las versiones de objeto_serializable.class en ambos lados son distintas o no.
Nota:Los objetos con las propiedades static y transient no se pueden serializar y la mayoría de las clases Java son serializable.