abstract/interface
同:可以有成员变量,都不能实例化
异:abstract 可以有实现的方法,interface不能有实现的方法

解决方案 »

  1.   

    接口可以使用;[接口] myClass = new [實現接口的類]
    這樣的話,程序在編譯時,不是把整個[實現接口的類]載入,而是在真正使用[實現接口的類]中的某個方法時,才把這個方法進行編譯.
      

  2.   

    接口比抽象类更符合复用原则~~~~
    如果可以,尽量用接口
    接口里的方法,没有方法体,你一旦implements接口,就必须实现里面所有的方法
    抽象类则不用
      

  3.   

    接口与抽象类的共同点是:他们都是用来供别人继承的,或是用来同意类型,他们都不可以有实例,他们都可以缺省实现!
    接口与抽象类的不同点是:1 外部关键字不同,接口用interface 而抽象类用abstract.
                          2 接口里的方法接口全是抽象的,抽象类可以抽象也可以非~~。
                          3 接口里不可以有实现,抽象类可以部分实现。
                          4 接口可以多实现,抽象只能继承一个。
      如:
               interface example{
                  public void A();
                  public void B();
                }
               你可以实现他,他容易移植,但不容易扩展。
               abstract example{
                    public void A();
                    public void B();
                 }
              你可以继承他,他容易扩展,但不容易移植。
               如:
                       class myClass implement example
                        {
                            A(){system.out.print("1");
                            B(){....}
                        }你必须全实现他,以后要加方法,得加在接口里,你还得实现他!
                 而 
                        class myClass extend example
                        {
                            A(){......}                        
                         }可以不全实现他,以后要加方法直接加在父类里,你不用实现他!
                    abstract example{
                    public void A();
                    public void B();
                    public void C(){ system.out.print("2");}
                 }
                  
      

  4.   

    http://www.csdn.net/develop/read_article.asp?id=10461
    可以帮助你!!!!!
      

  5.   

    http://expert.csdn.net/Expert/topic/2846/2846076.xml?temp=.1171533
      

  6.   

    public abstract class aaa {
      void a1();
      void a2();
    }
    public interface class bbb{
      void b1();
      void b2();
    }public class a extends aaa{
      public void a1(){}
    }
    public class b implements bbb{
      public void b1(){}
      public void b2(){}
    }从上面可以看出,子类如果继承abstract类的话,可以不用全部实现abstract 类中的方法。
    而如果是继承interface的话,就要全部实现interface的方法。
      

  7.   

    在programer23(亮子) 的回答中“、、你可以实现他,他容易移植,但不容易扩展。”什么叫移植?为什么接口容易移植??
      

  8.   

    也许说移植太笼统了,简要说就是我不想在用这个类了,我有更好的实现。
         如:
                interface example{
                  public void A();
                  public void B();
                }
               class myClass implement example
                        {
                            A(){system.out.print("1");
                            B(){....}         
                       }
              class mainGame{
                myClass exam=new myClass();
                .....
                .....//  假如你的程序有上千行,你如果用的是myClass exam =new ..
                .....//  你想用youClass这个类的东西,你的源代码就的全改,
                .....//  改为:youClass exam= youClass();
                exam.move();
                exam.paint();
                exam.dead();
                }
              而现在你就可以不毕改所有的了!
              你只需 
              class mainGame{
                example exam=new myClass()改为:
                example exam=new youClass();
                ..... 
                ....
                 里面东西不用改!
              }
      

  9.   

    在实际编程中
    接口用的比抽象类多
    很多书上引进interface这一概念时
    都从多继承角度的
    但是interface的有点决非与此
    它可以称作面向接口编程
      

  10.   

    programer23(亮子) 讲的非常好!
    我也一直对这两者间的区别不是太清楚
    没有理解到各位这样的深度
      

  11.   

    关键是is a和has a的区别!