Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Duda sobre la serialización

Se me genero una duda en referencia a la serialización, ya que en una de las actividades se dice que:

  • "Funciona en cascada. Por ejemplo, si un objeto Libro tiene un Autor, tanto el Libro como el Autor se serializarán."

Y en otra actividad dice:

  • "Al serializar un objeto de tipo Libro, para que la operación se produzca sin errores y el autor también sea serializado, es necesario que tanto las clases Libro como Autor implementen la interfaz Serializable."
  • "Si alguna de las clases no implementa la interfaz Serializable, se lanzará una excepción de tipo NotSerializableException."

Entonces se me generó la duda de cual de las actividades tiene razón, ya que en ambas situaciones no se habla de herencia y lo que entendí por los vídeos es que al Implementar en la clase padre, se le transfiere a la clase hija, y en viceversa no. Pero, reitero, en ambas actividades no se habla de Herencia.

PD: Ambas actividades salen como respuestas verdaderas. Las actividades son: https://app.aluracursos.com/course/java-java-io-streams-reader-writers/task/78682 https://app.aluracursos.com/course/java-java-io-streams-reader-writers/task/78683

1 respuesta

¡Hola Andres! ¡Espero que estés bien!

Lo que pasa es que la clase "Libro" y la clase "Autor" son dos clases completamente independientes, a pesar de que la clase "Libro" tenga un atributo de tipo "Autor" que solo guarda es una referencia de tipo "Autor" no crea herencia entre ellas. Es decir, A la verdad no existe herencia entre ella; por eso se hace necesario implementar la interfaceSerializable en ambas clases; ya que si alguna de las clases no la implementa se lanzará una excepción del tipo NotSerializableException. Ahora una forma de saber si una clase extiende o hereda de otra es cuando tiene en su firma la palabra reservada extends.

Ejemplo:

public class Libro {    //Esta es la firma de la Clase Libros
    private Autor autor;
    // restante del código omitido...
}

public class Autor {    //Esta es la firma de la Clase Autor
    private String nombre;
    // restante del código omitido...
}

Las firmas de las clases no tienen la palabra reserva extends, por tanto no hay herencia.

Para que haya herencia tendria que ser de la siguiente forma:

public class Libro extends Autor {    //Esta es la firma de la Clase Hija
    // restante del código omitido...
}

public class Autor {    //Esta es la firma de la Clase Madre**
    // restante del código omitido...
}

Aqui en este caso solo seria implementada la interface Serializable en la clase madre que es "Autor" ya que por herencia la clase hija Libro heredaria esa interface; quedando la firma de la clase madre de la siguiente forma:

public class Autor implements Serializable {    //Esta es la firma de la madre implementando la interfaz Serializable

¡Te deseo mucho éxito en tus estudios! y recuerda que aquí estaremos para apoyarte!

¡Vamos juntos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!