public interface Mp3 {
    //public abstract void play(); // 播放   // public abstract void pause(); // 暂停  //  public abstract void stop(); // 停止
}
public class GoldMp3 implements Mp3 {    public void play() {
        System.out.println("play");
    }    public void pause() {
        System.out.println("pause");
    }    public void stop() {
        System.out.println("stop");
    }
}
public class Consumer {    public static void main(String[] args) {
        Mp3 myMp3= new GoldMp3();
        myMp3.play();
        myMp3.pause();
        myMp3.stop();
    } // main方法结束
} // Consumer类结束
请问下
myMp3.play();
首先调用的是 Mp3();还是GoldMp3();???

解决方案 »

  1.   

    当然是GoldMp3()中的方法,那个接口方法被你的子类实现了,new的时候是子类,接口是一种声明
      

  2.   

    GoldMp3()中的方法,Mp3()中都没实体。
    别看他Mp3 myMp3= new GoldMp3();把对象给Mp3了。可实质这个对象还是GoldMp3();
      

  3.   

    当然是GoldMp3()中的方法,那个接口方法被你的子类实现了,new的时候是子类,接口是一种声明
      

  4.   

    接口的方法只是声明,没有实体(也就是没有具体的实现代码)
    一个非抽象类实现接口就要实现接口的方法(也就是要有方法的具体实现代码)
    所以,调用接口的方法,就是调用接口实现者(实现这个接口的对象)的方法
    本例中,当然就是调用GoldMp3();的方法了
      

  5.   

    肯定是GoldMp3();的方法,接口只是给你规定了必须要实现的几个方法,你的子类继承时候才写出具体方法,当然也可以再添加自己的,lz我也是菜鸟~~