#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.