Могу ли я иметь пустой класс 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
  }
}

Потому что, если вы реализуете класс, который расширяет абстрактный класс, он должен реализовывать все его методы.

Второй способ:

  • Или, если вы хотите, чтобы ваш второй класс был специализированным, вы могли бы иметь:

ваш первый класс, который не должен быть абстрактным, а второй может расширять его и использовать все его методы, а также иметь свои конкретные методы

Другие вопросы по тегам