下面是一个继承加重载的一段程序请问最后输出的是啥?//父类
public class Instrument {
        //输出弹奏乐器
        public void play()
        {
            System.out.println("弹奏乐器");
        }

public class Wind extends Instrument {
    //输出弹奏Wind
    public void play()
    {
        System.out.println("弹奏Wind");
    }
    //调用“输出的Wind”
    public void play2()
    {
        this.play();
    }
}
public class Brass extends Instrument {
    //输出弹奏Brass
    public void play()
    {
        System.out.println("弹奏Brass");
    }
    //调用"play"
    public void play2()
    {
        Brass b =new Brass();
        b.play();
    }
}
public class Music {
    //调用对象i play的方法
    public static void tune(Instrument i)
    {
        i.play();
    }    public static void main(String[] args) {        //调用Wind的方法
        Wind w =new Wind();
        tune(w);
        //调用Brass的方法
        Brass b  = new Brass();
        tune(b);
    }

解决方案 »

  1.   

    先输出wind后输出brass
      

  2.   

    重写就是相同的方法名和参数
    重载就是方法名相同但是参数不同 比如有参函数和无参函数
    继承时一般都是重写父类的方法
    wind 然后 bras
      

  3.   


    这里重写的是play方法,本身没有构造,也只调用了play(),所以调用的都是子类中的play方法。弹奏Wind
    弹奏Brass
      

  4.   


    这里重写的是play方法,本身没有构造,也只调用了play(),所以调用的都是子类中的play方法。弹奏Wind
    弹奏Brass
    应该有一个想上转型的过程吧
      

  5.   

     Brass b  = new Brass();
      tu他ne(b);的数据集类型是Brass然后
     public static void tune(Instrument i)
        {
            i.play();
        }
    tune(括号内的数据类型为 Instrumen   )由于Bress继承Instrumen 所以  tune能够接收 Bress类型的值,有隐式的向上造型   
     Instrumen   i  =new Bress();