Serialization and Deserialization rules for member variable of Serializable Object
<p>I have read <a href="https://stackoverflow.com/questions/8141440/how-are-constructors-called-during-serialization-and-deserialization">Constructor Calls while serialization</a> , <a href="http://www.xyzws.com/javafaq/what-are-rules-of-serialization-in-java/208" rel="nofollow noreferrer">Serialization Rules</a> but can't able to find out all rule for member variable.</p>

<p>I have below question:</p>

<p>Student.java</p>

<pre><code>class Person {
}
class Student extends Person implements Serialization {
   List&lt;Book&gt; books; 
   Student(){}
   Student(List&lt;Book&gt; books) {
      this.books = books;
   }
}

class Book implements Serialization {
  Book() {}
  String bookId;
  Book(String bookId) {
      this.bookId = bookId;
  }

}
</code></pre>

<p>Here Student is serializable and Book class is also serializable then what are rules for constructor calling  serializable and deserializable. </p>

<ol>
<li>Is required default constructor in Book class?
If Yes , Then Why required default constructor while deserialization.</li>
<li>How constructor calls while serialization and deserialization?</li>
</ol>