关于java向父转换的例题,不太清楚,希望能解释一下

class Instrument{
  void play(){
    System.out.println("Instrument playing");
  }
}
class Piano extends Instrument{
    void play(){
    System.out.println("piano playing");
    }
}
class InstrumentDemo{
     public static void main(String[] args){
        Instrument i = new Instrument();
        Piano p =new Piano();
        tune(p);
        tune(i);
     }
     static void tune(Instrument i){
         i.play();
         System.out.println("tuning");
     }
}

所以是哪里不懂

向父转型

输出顺序不清楚