Я начинаю на Java, пытаясь написать систему партийных квестов для игры, которую я сейчас пишу, и у меня есть несколько вопросов, которые я хотел бы быть ответил. Я уже обошел и спросил других людей, но они не знакомы на Java.Вопросы о классах, распространяющихся от базового класса (Java)
В прошлом я пытался создать кучу классов и получить доступ к ним с помощью нескольких методов получения. Я обнаружил, что невероятно утомительно писать и думать, что я могу объединить их в абстрактном классе/реализованном классе. Таким образом, код выглядел более как это ...
DynastyPQInterface pq = new CustomPQ // or ....
DynastyPQInterface pq = new OtherCustomPQ
Конечно, это представляло трудности, такие как возможность использовать только реализованные методы. Это не позволило мне получить доступ к эксклюзивным методам класса, которые я, возможно, захочу использовать позже.
В конечном счете, я хочу, чтобы иметь возможность использовать один метод get, чтобы возвращать любой из этих производных классов, но при этом сохраняя возможность просто повсеместно использовать метод get для вызова методов, которые они имеют вместе, такие как выполнить, создать, конец, одновременно позволяя мне специально использовать их эксклюзивные методы. Есть ли способ сделать это, или это невозможно?
Если это все еще не ясно ...
код у меня написать теперь базовый класс, который распространяется на другие классы в порядке ...
DynastyPQ (base) -> methods include (run(), execute(), end())
CustomAPQ (inherited from DynastyPQ) -> (has exclusive methods like getPoints())
CustomBPQ (inherited from DynastyPQ) -> (has exclusive methods like revivePlayer())
Я хочу написать метод get, чтобы избавиться от множества. То, что я прямо сейчас ...
DynastyPQ dynastyPQ;
DynastyPQ getPQ() {
return dynastyPQ;
}
void setPQ(DynastyPQ pq) {
dynastyPQ = pq;
}
Делать это ...
DynastyPQ pq = new CarnivalPQ();
я могу получить доступ только методы DynastyPQ, а не методы Карнавала.
Есть ли способ доступа к эксклюзивным методам, в то время как универсально может выполнять четыре базовые функции независимо от типа класса, или я пропустил что-то раньше?
tl; dr -> Мне нужен один метод get, который универсально возвращает все классы, которые наследуются от класса X; однако я хочу иметь доступ к эксклюзивным методам каждого класса.
'CarnivalPQ pq = new CarnivalPQ();'? Это то, что вы ищете? –
К сожалению, нет, потому что тогда мой метод getPQ() должен был бы вернуть именно CarnivalPQ; однако проблема, с которой я сталкиваюсь, заключается в том, что если я создаю кучу других классов, которые наследуются от базового или абстрактного класса, я хочу иметь доступ к ним повсеместно, а не getMethod для каждого из них. –
Что это за метод getPQ()? Что оно делает? Какая особенность у этого нового CarnivalPQ() отсутствует? Отправьте код. –