подскажите почему в этом коде в метод передается объект с типом интерфейса:
private static void print(Drink drink) {
System.out.println(drink.getClass().getSimpleName());
}
public interface Drink {
boolean isAlcoholic();
}
То есть Drink drink - выглядит так словно это объект с типом интерфейса, но ведь у интерфейса нет объектов... это какая-то очень странная запись, я её не понимаю.
То же самое касается например List<Object> list = new ArrayList<>(). Если List это интерфейс почему мы пишем его при создании объекта?