父类实现了Serializable,子类不需要实现Serializable
相关注意事项
a)序列化时,只对对象的状态进行保存,而不管对象的方法;
b)当一个父类实现序列化,子类自动实现序列化,不需要显式实现Serializable接口;
c)当一个对象的实例变量引用其他对象,序列化该对象时也把引用对象进行序列化;
d)并非所有的对象都可以序列化,至于为什么不可以,有很多原因了,比如:
1.安全方面的原因,比如一个对象拥有private,public等field,对于一个要传输的对象,比如写到文件,对他们进行重新的资源分配,而且,也是没有必要这样实现。或者进行rmi传输等等,在序列化进行传输的过程中,这个对象的private等域是不受保护的。
2. 资源分配方面的原因,比如socket,thread类,如果可以序列化,进行传输或者保存,也无法
分享到:
相关推荐
例如,在上面的实例中,Foo类实现了Serializable接口,那么其子类Foo1和Foo2就不需要实现Serializable接口。 二、构造函数的调用 在创建对象的时候,递归调用了父类的构造函数。例如,在上面的实例中,创建了Foo2...
SupperMessage 实现了 Serializable 接口,但 MMessage 并没有实现该接口。当我们尝试序列化 MMessage 对象时,Java 将抛出 NotSerializableException 异常。 问题分析 ---------- 通过分析错误信息,我们可以...
如果某个类的父类没有实现`Serializable`接口,那么子类仍然可以序列化,但是父类的字段不会被序列化,除非父类中声明了`transient`或`volatile`的字段。 在序列化过程中,有时需要对特定类的字段进行特殊处理。...
如果你的类有一个父类,而父类没有实现`Serializable`接口,那么你需要确保父类具有无参构造函数,以便在反序列化时创建父类的实例。如果父类实现了`Serializable`,则其字段也会被序列化。 **Java序列化的特点:**...
1. 将需要被序列化的类实现 Serializable 接口。 2. 使用一个输出流(如:FileOutputStream)来构造一个 ObjectOutputStream(对象流)对象。 3. 使用 ObjectOutputStream 对象的 writeObject(Object obj) 方法将...
1. 将需要被序列化的类实现 Serializable 接口。 2. 使用一个输出流(如:FileOutputStream)来构造一个 ObjectOutputStream 对象。 3. 使用 ObjectOutputStream 对象的 writeObject(Object obj) 方法将参数为 obj ...
1. 将需要被序列化的类实现 Serializable 接口,然后使用一个输出流(如:FileOutputStream)来构造一个 ObjectOutputStream 对象,接着,使用 ObjectOutputStream 对象的 writeObject(Object obj) 方法就可以将参数...
如果父类已经实现了`Serializable`接口,那么所有子类都将自动具有序列化的能力,无需额外声明。 7. **利用Serializable保存自定义数据至本地** 在Android应用中,我们可以利用`Serializable`将自定义数据保存到...
- Override(重写)是在子类中,方法名、返回类型和参数列表都与父类相同,但实现不同。 10. **Final类的特点**: - Final类不能被继承,保证了类的不可变性。 - Final变量一旦赋值后就不能改变。 - Final方法...
2. **子类需要负责序列化(反序列化)父类的公共、受保护以及可访问的包内字段**:因为父类没有实现`Serializable`,子类需要自己处理这些字段的序列化。这意味着在子类中,可能需要使用`writeObject()`和`...
重写(Override)发生在子类和父类之间,子类重写父类的同名方法,保持相同的参数列表,但实现不同。 3. **接口和内部类、抽象类的特性**:接口是Java实现多继承的方式,定义一组方法签名,不包含具体实现。内部类...
在给定的"ex5"练习中,我们可能遇到一个场景,其中我们需要从父类和接口中继承或实现方法,而不是在当前类中直接定义它们。 在Java中,类可以通过以下两种方式从其他类或接口获取方法: 1. **继承(Inheritance)*...
- `super()`用于调用父类的构造器,确保父类的初始化在子类构造器之前完成。 - `this()`同样用于调用本类的其他构造器,可以在同一个类的不同构造器之间传递参数。 2. **作用域public, protected, private,以及...
- Override(重写):发生在父类与子类之间,方法名、参数列表和返回类型都必须相同,但子类方法不能降低访问权限,且不能抛出父类未抛出的异常。 11. **Final类**:Final类不能被继承,提供最终的实现,增加了...
在 COLLECTION 框架中,实现比较需要实现 Comparable 接口或 Comparator 接口。 15. 编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串: 该题目考察了 Java 中的字符串处理和...
需要注意的是,如果父类没有实现`Serializable`接口,但在反序列化时父类有默认构造函数,那么在反序列化过程中,父类的默认构造函数会被调用。但如果父类是可序列化的,那么Java反序列化时会直接从字节流中恢复对象...
13. 实现序列化可以实现`Serializable`接口,并使用`ObjectOutputStream`和`ObjectInputStream`进行序列化和反序列化。 14. 实现比较需要实现`Comparable`接口或使用`Comparator`接口。 15. 插入排序代码略,根据...
2. **序列化与继承**:如果父类是可序列化的,子类默认也是可序列化的。但是,如果父类包含不希望序列化的字段,可以通过`transient`关键字来标记它们。 3. ** transient 关键字**:`transient`修饰的成员变量不会...
11. 继承时候类的执行顺序问题:父类的静态代码块 -> 父类的实例代码块 -> 子类的实例代码块 -> 子类的构造方法。 12. 内部类的实现方式?:可以使用静态内部类或非静态内部类。 Java 反射机制 13. 什么是类的返射...