Есть иерархия классов указанная ниже, для сериализации хватит ли имплиментировать Serializable только классу A, для сериализации классов типа C?
class A {
}
class B extends A{
}
class C extends B{
}
Простой ответ: да, интерфейсы в Java наследуются.
Об этом, в частности, явно написано в документации Serializable:
All subtypes of a serializable class are themselves serializable.
Все наследники сериализуемого класса сериализуемы.
При этом надо иметь ввиду, что Serializable — интерфейс, который используется только чтобы отмечать классы, поддерживающие сериализацию. Класс, который отмечен как Serializable может содержать поля, сериализация которых невозможна.
class A implements Serializable {
}
//Класс В унаследовал интерфейс
class B extends A {
//но содержит поля, которые не сериализуются
Scanner scanner;
}
Дополнение по несериализуемым полям: При обнаружении несериализуемых полей при сериализации будет выброшено NotSerializableException. Это можно обойти несколькими способами, описанными в документации к Serializable, например в примере выше:
scanner как transient;но в этом случае сохранение и восстановление состояния несериализуемого поля нужно будет реализовывать самостоятельно.
Продвижение своими сайтами как стратегия роста и независимости