Pessoal,
segue a questão:
public class Teste{
     private String runNow(){
          return "High";
     }
     static class B extends Teste{
          
    	 public String runNow(){
               return "Low";
         }
     }
     public static void main(String args[]){
    	 
    	 Teste[] a=new B[]{new B(),new C()};
         
    	 for(Teste aa:a)
    		 System.out.print(aa.runNow()+" ");
     }
}
class C extends Teste.B{
     public String runNow(){
          return "Out";
     }
}
Saída: High High
Dúvida: Em tempo de execução as referências não seriam para as classes B e C ? Ou seja a saída seria: Low Out
???