Как класс Util может принимать в качестве параметров типы CanFly и CanMove, если он не реализует соответствующие интерфейсы?
public class Solution {
    public static void main(String[] args) {
        Duck duck = new Duck();
        Util.fly(duck);
        Util.move(duck);
    }

    public static class Duck implements CanFly, CanMove {
        @Override
        public void doAnotherAction() {
            System.out.println("Moving");
        }

        @Override
        public void doAction() {
            System.out.println("Flying");
        }
    }

    public static class Util {
        static void fly(CanFly animal) {
            animal.doAction();
        }

        static void move(CanMove animal) {
            animal.doAnotherAction();
        }
    }

    public static interface CanFly {
        void doAction();
    }

    public static interface CanMove {
        void doAnotherAction();
    }
}