Понимание наследования Java и создания функций - PullRequest
0 голосов
/ 08 марта 2019

У меня есть базовый класс, который выглядит следующим образом:

class BaseClass{
  //this is a base class
  // I dont want to add any generic methods here as it is 
  //extended by tens of classes
}

Теперь два конкретных класса, расширяющих этот базовый класс

class Abc extends BaseClass{

//method
  void letsGo(){
    //this method is not there in base class
  }
}
class Xyz extends BaseClass{

//method
void letsGo(){
    //this method is not there in base class
  }

}

Теперь мне нужна функция, которая должнапринимает объект класса Xyz или объект класса Abc с синтаксисом, подобным приведенному ниже

void run (BaseClass base){
  base.letsGo() // I know it wont work 
}

, и называет его как run(object of Abc) или run(object of Xyz).

Как мне это реализовать.Я не хочу добавлять абстрактный метод в базовый класс, так как он расширен многими классами

1 Ответ

1 голос
/ 10 марта 2019

Похоже, ваша проблема в том, что родительский класс BaseClass будет наследоваться многими дочерними элементами, но для реализации letsGo потребуется только небольшое подмножество дочерних классов.Я думаю, что самое простое решение - создать промежуточный подкласс, скажем, MediumClass (расширяющий BaseClass), который содержит метод letsGo, а затем заставить Abc и Xyz наследовать его.Наконец, заставьте метод run принять промежуточный класс в качестве аргумента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...