interface A{
  void f();
}class B implements A{
  public void f(){
      ...........
  }
}A a=new B();//通过接口类型的引用变量来访问对象,通过a来引用B实现了接口A中的方法f()

解决方案 »

  1.   

    interface A{
      void f();
    }class B implements A{
      public void f(){
          System.out.println("this is B");
      }
    }class C implements A{
      public void f(){
          System.out.println("this is c");
      }
    }
    class Test{
      public static void main(String args[]){
         A a = new B();
         a.f();   //这里打印出,this is b
          a = new C();
         c.f();    //这里打印出 this is c
      }
    }
      

  2.   

    我只知道
    通过接口创建新的类然后通过新类实现接口的方法
    实现后的封装性更好,多个组件可以共享同一个接口对象,
    而且通过对接口类的扩展(构造函数)来传递更多的参数,不像addActionListener(this),只有一个固定参数,可以MyAction ac=new MyAction(a,b,c,d,e),然后再到接口类中使用这些参数。但是好像都使用的内部类(Core Java I)
    我觉得动作这个抽象类也很不错(AbstractAction)
      

  3.   

    http://expert.csdn.net/Expert/topic/2285/2285054.xml?temp=.3881189
      

  4.   

    通过接口类型的引用变量来访问对象,这在多态或Upcast中是非常有用的,比如:
    interface Shape{
      void draw();
    }class Triangle implements Shape {
      public void draw() {    //实现接口
        System.out.println("draw a Triangle.");
      }
      //other code.
    }class Square implements Shape{
      public void draw() {    //实现接口
        System.out.println("draw a Square.");
      }
      //other code.
    }class Circle implements Shape {
      public void draw() {    //实现接口
        System.out.println("draw a Circle");
      }
      //other code.
    }class AllShape {
      public static void main(String[] args) {
        Shape[] s = new Shape[3];
        s[0]=new Triangle();
        s[1]=new Square();
        s[2]=new Circle();
        for(int i=0;i<s.length;i++)
          s[i].draw();    //通过接口类型的引用变量来访问对象,
                          //这里会根据不同的形状画出图形
      }
    }
      

  5.   

    看书!
    推荐《Java编程思想》
    上面这种基础问题讲得太详细了,而且深入浅出
      

  6.   

    使用接口其中一个很重要的目的是封装与扩展
    就拿java.sql.Connection来说
    对于不同的数据库实现连接数据库的逻辑是不一样的,哪么sun是否把所有的数据库连接的逻辑都写出类来呢,这是不可能的,于是接口就来了,sun只要定义一些方法,这些方法是在java.sql.Statement等其它类中用到的.这样一来如何实现数据库连接就不要由sun来实现了.对于扩展,如果以后出现一新的数据库哪么它也可以根据sun的接口实现里面的方法就OK了.