Допустим есть интерфейс Soldier
public interface Soldier {
String makeCombat();
}
Его реализует Infantryman
public class Infantryman implements Soldier {
@Override
public String makeCombat() {
return "Combat on foot";
}
}
И еще его реализует Сommander
public class Сommander implements Soldier {
private int sizeOfSubordinates = 10;
@Override
public String makeCombat() {
return "Combat on foot and on transport";
}
public int sizeOfSubordinates() {
return sizeOfSubordinates ;
}
}
Вопрос в следующем: какой смысл в интерфейсе, если я не смогу вызвать sizeOfSubordinates() если переменная будет типа Soldier commander = new Commander();
Чтобы можно было его использовать, нужно писать Commander commander = new Commander();
Но в таком случае отсутствует полиморфизм и т.д.
Более обобщенно, какой подход использовать, когда у классов есть и общие методы и уникальные для некоторых из классов. Если мне нужны методы не входящие в общий интерфейс, то мне создавать переменную конкретного класса, обходя интерфейс?
Можно сделать 2 интерфейса, Soldier и Officer, Soldier содержит метод makeCombat()
, Officer наследует Soldier и содержит метод sizeOfSubordinates()
. Таким образом, там где Вам требуется работать с офицерами (командирами, у которых есть подчиненный состав), Вы используете интерфейс Officer, а там где Вам нужен весь личный состав, используете интерфейс Soldier.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Задам мб глупый вопрос, но все же как проверить поля с помощью рефлексии и если поля написаны не правильно либо пустые выбрасывало исключения
Имеется задача на шифрование, где каждый из входящих в строку символов английского алфавита надо заменить на его "зеркальный", те