Я думаю, что вы можете сделать уровень интерфейсом, а затем проверить, является ли он интерфейсом.
В своей наиболее распространенной форме интерфейс - это группа связанных методов с пустыми телами.Поведение велосипеда, если оно указано в качестве интерфейса, может выглядеть следующим образом:
interface Bicycle {
void changeCadence(int newValue); // wheel revolutions per minute
void changeGear(int newValue);
void speedUp(int increment);
void applyBrakes(int decrement);
}
Для реализации этого интерфейса имя вашего класса изменится (например, на велосипед определенной марки, например, ACMEBicycle), и вы бы использовали ключевое слово Implements в объявлении класса:
class ACMEBicycle implements Bicycle {
// remainder of this class implemented as before
}
Реализация интерфейса позволяет классу стать более формальным в отношении поведения, которое он обещает предоставить.Интерфейсы формируют контракт между классом и внешним миром, и этот контракт применяется компилятором во время сборки.Если ваш класс утверждает, что реализует интерфейс, все методы, определенные этим интерфейсом, должны появиться в его исходном коде, прежде чем класс будет успешно скомпилирован.