Ну, здесь есть ряд проблем. Начнем с того, что это самое главное, это не сработает, потому что вы не можете переопределить статические методы в Java. Я думаю, что цель того, что вы говорите, состоит в том, чтобы иметь возможность заменить во время выполнения ClassA на ClassB или B или A или что-либо еще, в зависимости от некоторых параметров. Для этого вам нужно иметь возможность использовать динамическую диспетчеризацию (или, проще говоря, виртуальные методы), которая позволила бы системе времени выполнения выбирать адрес памяти метода, который будет выполняться во время выполнения. Это невозможно при использовании статических методов. Вы должны сделать методы нестатическими, чтобы это работало. Вам не нужно специально разрабатывать Java Interface
, но когда вы расширяете ClassA с помощью ClassB, вы сможете обрабатывать ваши объекты, как если бы они были просто объектом ClassA.
Все это говорит о том, что если вы удалите статические модификаторы из методов и сделаете их нестатическими, то вы могли бы использовать ClassB в проекте A, не имея каких-либо операторов импорта вообще в том классе клиента, о котором вы говорите. Однако где-то в проекте A кому-то понадобится знать о ClassB, чтобы создать его экземпляр. Это, конечно, если вы не хотите выполнять связывание во время выполнения и загружать класс динамически, используя строку. Имеет ли это смысл?