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(); }