РЕДАКТИРОВАТЬ - этот ответ для предыдущей версии вопроса, которая не включает в себя ничего о клиентах и нескольких серверах. Этот ответ о совместном использовании данных между экземплярами классов.
Есть много способов сделать что-то подобное. Если я понял ваш подход, изложенный в первом абзаце, вы не хотите, чтобы class1 и class2 расширяли class3. Вы хотите, чтобы они оба имели ссылку на один и тот же экземпляр класса 3. Если они имеют общую ссылку на один и тот же объект, то изменение значений этого объекта будет отражено в обоих классах. Если они расширяют class3, как вы сказали, что пытались, то и class1, и class2 будут иметь свойства class3, но они не будут делиться какими-либо данными. Если у класса 3 было свойство
Object value;
затем экземпляры класса1 и класса2 будут иметь отдельные ссылки на отдельные экземпляры 'значения'.
Вам необходимо установить связь между классом и экземпляром объекта и тем, что означает расширение класса.
Обратите внимание, что это не очень хороший способ обмена информацией между объектами в реальной программе. Вы можете столкнуться со всеми видами проблем параллелизма. То же самое относится и к решению, в котором используется глобальный механизм, реализованный с использованием статических полей.
Чтобы сделать это со статическими полями, сделайте что-то вроде:
class SharedData {
public static Object shared1;
}
и затем в ваших экземплярах class1 и class2 вы можете получить доступ к
SharedData.shared1
для набора или получения.
Но я бы не стал делать ничего подобного в профессиональном контексте.