Я работаю над проектом и для удобства использования. Я хотел иметь возможность создать класс, расширяющий мой интерфейс «Экран», а класс экрана затем инициализируется из моего основного метода, например:Выполнение абстрактных методов из других классов
//Screen Interface
public abstract interface Screen {
public abstract void init();
}
//Screen Implementation
public class Game implements Screen {
@Override
public void init() {
//Do stuff
}
}
//Main class
public class Main {
public static void main(String[] args) {
Screen s = new Screen();
s.init();
}
}
Но это не работает, потому что вы не можете создать абстрактный класс. Я бы пробовал
Screen.init();
Но вы не можете называть метод подобным, если только его статический. Как я могу сделать то, что я пытаюсь достичь? Если бы я был недостаточно ясен, спросите в комментариях не просто флаг, и я обновлю свой вопрос.
EDIT: Я знаю, что могу создать экземпляр класса Game, но это не главное. Я пытаюсь запустить метод init в каждом классе, реализующем интерфейс экрана, поэтому мне не нужно указывать каждый из них.
Также вы, похоже, путаетесь между интерфейсами и абстрактными классами –
Я не вижу смысла в декларировании абстрактного интерфейса. Это уже так же, как и методы. По умолчанию общедоступны методы. Кроме того, вы не можете создавать абстрактные классы и интерфейсы. – Li357
Скажите, что вы смогли сделать что-то вроде 'Screen.init();', какой подкласс должен инициализировать? Зачем? Это пахнет проблемой [XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). Просьба уточнить. –