Создание интерфейса Java с использованием аналогичных методов

#java #list #oop #arraylist #interface

#java #Список #ооп #arraylist #интерфейс

Вопрос:

Я работаю над упрощением кода, где у меня есть два класса (Lab и Pitbull). Они имеют одинаковые имена методов, но вызывают разные вспомогательные методы. Вспомогательные методы должны остаться.

 class lab{
      void sprint(boolean start){
          Labhelper.doSomething()
      }
}
class pitbull{
      void sprint(boolean start){
          Pitbullhelper.doSomething()
      }
}
  

Моя цель — создать интерфейс (т. Е. dog), где я могу создать список lab и dog, но также иметь возможность вызывать void sprint() из этого списка. Как я мог бы это сделать?

Комментарии:

1. Покажите нам вашу попытку создать указанный dog интерфейс.

Ответ №1:

Нам нужно создать интерфейс Dog, и Lab amp; Pitbull будут реализовывать этот интерфейс.

Далее мы можем создать список Dog, который может содержать экземпляры как Lab, так и Pitbull. Когда этот список повторяется и вызывается метод sprint, реализация будет вызвана на основе объекта, вызывающего его.

Смотрите приведенный ниже код —

 interface Dog {
    void sprint(boolean start);
}

class Lab implements Dog {
  @Override
  public void sprint(boolean start) {
    Labhelper.doSomething();    
  }
}

class Pitbull implements Dog {
  @Override
  public void sprint(boolean start) {
    Pitbullhelper.doSomething();
  }
}

public class MainClass {
  public static void main(String[] args) {
    List<Dog> dogs = new ArrayList<>();
    dogs.add(new Lab());
    dogs.add(new Pitbull());
    dogs.forEach(dog -> dog.sprint(true));
  }
}
  

В приведенном выше коде, когда sprint() вызывается для первого объекта, будет вызвана реализация класса Lab, в то время как для второго объекта будет вызвана реализация класса Pitbull.