在多态的时候用的比如你定义了一个接口A,里面有个抽象方法fun()用B和C两个类分别实现了接口现在你可以声明一个变量
A  a;
这个变量的类型是接口A但是你在使用的时候可以把对象B或者C赋到a上那么你可以用a.fun()这个函数在不同的环境下分别调用B或C中实现的方法fun()
多态用的

解决方案 »

  1.   

    dlxu
    把对象B或者C赋到a上这样a.fun()是可以在根据对象而调用不同的fun()但是,我觉得这样,直接用对象B或者C,建立实例,然后引用方法fun(),不也行吗?
    这样还省去了赋值一步...
      

  2.   

    我现在体会不到java的动态性的优点...
      

  3.   

    “但是,我觉得这样,直接用对象B或者C,建立实例,然后引用方法fun(),不也行吗?
    这样还省去了赋值一步...”
    你一开始并不一定知道调用的是B还是C,而且你以后可能又会创建一个D implements A
    然后把D的实例赋给a 
    这样做的目的是考虑到可扩展性
      

  4.   

    class classname implements interface1,interface2...
      

  5.   

    用在向上转型时如:
    public class A
    {
      public void fun()
      {
         System.out.println("funA");
      }}
    public class B extends A
      {
         public void fun()
         {
          System.out.println("funB");
         }  }
    public class C
    {
        public void fun(A a)
        {
            a.play();    }
    public static main(String args[])
    {
        A a = new B();
        fun(a);
    }
    }
    如果不是这样,你为每一个对象都写上相应的函数如
      public void fun(A a)
        {
            a.play();    }
      public void fun(B a)
        {
            b.play();    }
    你还必须生成相应的对象,一个是不容易扩展,程序也显得冗余.
      

  6.   

    a.play();
    方法play()应该在什么地方呢
      

  7.   

    所谓向上转型就是up casting
    一般接口用于设计上
    不考虑设计的情况下[i.e.完成某一功能]interface可以说是多余的
    所以说建议先看一下设计模式[GOF]
      

  8.   

    接口我的理解是
    因为JAVA不支持多重继承 
    如果你的程序中要用到A类的方法 和B类的方法
    但是你只能继承其中的一个类
    这个时候你要是继承了A类
    那么B类的方法 你要是想使用的话就的在你自己的新类之中创建
    当然了 方法少的话无所谓 多的话就很麻烦了
    这个时候接口就很方便了
    你可以定义一个接口在其中定义
    A和B的方法
    然后实现他就简单的多了
    这只是我自己的看法
    就算交流一下好了
    其他人看看我说的对吗?
      

  9.   

    哦,更正一下
    public class A
    {
      public void fun()
      {
         System.out.println("funA");
      }}
    public class B extends A
      {
         public void fun()
         {
          System.out.println("funB");
         }  }
    public class C
    {
        public void fun(A a)
        {
            a.play();    }
    public static main(String args[])
    {
        A a = new B();
        fun(a);
    }
    }更正如下
    public class A
    {
      public void fun()
      {
         System.out.println("funA");
      }}
    public class B extends A
      {
         public void fun()
         {
          System.out.println("funB");
         }  }
    public class C
    {
          public void fun(A a)
        {
            a.fun();    }
      public void fun(B a)
        {
            b.fun();    }
    public static main(String args[])
    {
        A a = new A();
       B b  = new B();
        fun(a);
        fun(b);
    }
    }。
    也就是说没有多态的机制,你必须生成每个相应的对象,才能达到相应的调用,
    显然不利于调用和扩展.
      

  10.   

    说java中接口是用于多继承和什么约定的朋友多半是没有理解接口的含义,当然多继承是接口应用d的一个方面但在实际应用中是比较少的。接口主要是用于实现多态,从而多系统解偶增加复用的可能性。在大型的java系统和framework中接口的应用是铺天盖地。好好去理解一下什么叫“面向接口的编程吧“,等哪一天你真正理解了它那么离高手也就不远了。
      

  11.   

    呵呵,我主要看了connect接口后有所理解的。大家可以看看想想