Могу ли я иметь пустой класс Java?
Я создаю игру на основе сетки.
Мне нужно реализовать набор препятствий, которые занимают случайные позиции в сетке. Я создал абстрактный класс ALifeForm
, который содержит общие методы для каждого элемента в сетке. Очевидно, что абстрактные классы не могут быть инициализированы, поэтому я собирался создать новый класс AObstacle
, который будет расширяться ALifeForm
,
Единственный вопрос, мой AObstacle
класс не специализированный. Все необходимые методы находятся в пределах ALifeForm
,
Могу ли я иметь пустой класс? Это плохая практика программирования? И если так, что я могу реализовать вместо этого?
2 ответа
Конечно...
class AObstacle { }
(Кроме того, какую бы модель наследования вы не использовали.) Ничто не мешает вам сделать это.
Помните, что класс - это не то, что вы определяете. Тип есть. Класс - это просто языковая / синтаксическая конструкция, используемая для описания типа. Если описываемый тип не имеет никаких атрибутов или операций, кроме модели наследования, то к нему больше нечего добавить.
Хотя вы добавляете одну вещь. Вы даете этому имя. Звучит не так много, но определение семантической концепции с конкретным именем (особенно в статически типизированной среде) очень важно. Ваш тип теперь имеет идентификационные данные отдельно от других типов в системе. Если вещи добавляются к нему позже, есть место, чтобы добавить их без рефакторинга и внесения изменений.
Для этого вам не нужно иметь абстрактный класс и класс, который его расширяет, или пустой класс (который тоже возможен).
Первый способ:
Вам просто нужно реализовать два класса: класс, который содержит методы и переменные, которые вам нужно использовать, и второй класс, который имеет экземпляр вашего первого класса:
public class A{
public void firstMethod(){
//do your stuff here
}
....
}
public class B{
public static void main(String[] args) {
A a=new A(); //instantiate your class here
a.firstMethod();// then just use its methods
}
}
Потому что, если вы реализуете класс, который расширяет абстрактный класс, он должен реализовывать все его методы.
Второй способ:
- Или, если вы хотите, чтобы ваш второй класс был специализированным, вы могли бы иметь:
ваш первый класс, который не должен быть абстрактным, а второй может расширять его и использовать все его методы, а также иметь свои конкретные методы