Я видел варианты этого вопроса, но ни один из них действительно не затрагивает мою проблему.Как проверить, распространяется ли класс еще на один
Допустим, я строю армию с занятиями. В верхней части моей структуры Inheritance у меня есть реферат «Unit». Затем аннотация "Flying", "Основание" и "Здание" класс, который расширяет блок. Затем бетон «Вертолет» и «Jet» класс, который распространяется на Flying. Как и бетон «Soldier» и «Tank» класс, который расширяет землю. и, наконец, «HQ» и «Поставка», который расширяет здание.
Ниже приведен метод класса под «» Солдат:
public void attack(Unit enemy){
if(enemy.getSuperclass().equals(Flying)){
System.out.print("Soldiers cant attack flying units");
}
else{
//Code to attack enemy here
}
Хочу противника, чтобы быть в любой форме блока. Это связано с тем, что солдат должен иметь возможность атаковать как здания, так и другие наземные подразделения. Однако я не хочу, чтобы солдаты могли атаковать летающие объекты.
Очевидная проблема в том, что, поскольку я объявил врага как Unit, он не знает, какой подкласс он принадлежит, и поэтому пытается найти суперкласс для блока, который не существует.
Я уверен, что у меня может быть геттер для каждого устройства, которое вручную установило, какой тип устройства это ... но это больше работает и не кажется эффективным.
Ничего себе, 5 эквивалентных ответов, опубликованных в том же 10-секундном разрезе! –
Вы также можете использовать интерфейсы, поскольку наследование классов может ограничивать моделирование всех. Но сначала попытка наследования прекрасна. –
* примерof * изумление! – NINCOMPOOP