Question 7:
Given: class Bird{ public void fly (){System.out.print("Can fly"); } } class Penguin extends Bird{ public void fly (){System.out.print("Cannot fly"); } } and the code fragment: class Birdie { public static void main (String [ ] args){ fly( ( ) -> new Bird ( )); fly (Penguin : : new); } /* line n1 */ } Which code fragment, when inserted at line n1, enables the Birdie class to compile?
Answer options:
A. static void fly (Consumer<Bird> bird) { bird :: fly (); } B. static void fly (Consumer<? extends Bird> bird) { bird.accept( ) fly (); } C. static void fly (Supplier<Bird> bird) { bird.get( ) fly (); } D. static void fly (Supplier<? extends Bird> bird) { bird::fly(); }