抽象类与接口都可以定义一种访问的约束或规则
--------------------------------------------------------------------------------抽象类多用于在同类事物中有无法具体描述的方法的时候,为了使该同类事物中的该方法能够统一,不致混乱,可将该方法声明为抽象方法,同时则把该类声明为抽象类。特点:同类事物中,各个子类对该方法的描述不一致,为了便于外界统一访问,则对该方法进行约束。
--------------------------------------------------------------------------------接口多用于不同类事物之间,定义不同类之间的通信规则。如某资源要访问多个不同的类,为了使该资源能统一进行访问,不致混乱,可以为这些要被访问的类定义一个统一的接口,则该资源就能通过该接口对这些不同的类进行统一的调用。特点:为不同类的事物,定义一个便于外界统一访问的规则。或者说当不同类事物具有某种相同的功能,并且不同类对该功能的描述不一致时,则可将该功能定义为接口。
--------------------------------------------------------------------------------举例说明:抽象类:所有的图形都具有一个求面积getArea()的方法,但是每个图形都有不同的描述,为了使外界(Outside)能统一访问该方法,则将该方法声明为抽象方法,并且包含在一个抽象类Shape中,并使其他的具体的图形类继承这个抽象类。abstract class Shape {   
    abstract int getArea();   
}   
  
class Circle extends Shape {   
    public int getArea() {   
      //具体的实现   
    }   
}   
  
public class Outside {   
   public static void access(Shape object) {   
      object.getArea();   
   }   
       
   public static void main(String[] args) {   
       Circle c = new Circle();   
       access(c);   
   }   
}  abstract class Shape {
    abstract int getArea();
}class Circle extends Shape {
    public int getArea() {
      //具体的实现
    }
}public class Outside {
   public static void access(Shape object) {
      object.getArea();
   }
    
   public static void main(String[] args) {
       Circle c = new Circle();
       access(c);
   }
} 接口:电脑(资源)要访问mp3的存储器,U盘的存储器一起其他的一些外设的存储器(不同类的事物)。为了使电脑能统一访问,则定义一个接口(Storage),使要被访问的不同类型的存储器实现这个接口,这样电脑就可以统一调用了。也可以说是,不同的类型的存储器都有存储的功能,为了使外界(电脑),能够统一访问则建立一个接口,让不同类型的存储器都来实现这个接口,外界则通过接口调用。interface Storage {   
   void store();   
}   
  
class Mp3 implements Storage {   
   public void store() {   
      //Mp3的存储规则   
   }   
}   
  
class UDisk implements Storage {   
   public void store() {   
      //U盘的存储规则   
   }   
}   
  
public class Computer {   
   public static void access(Storage object) {   
      object.store();   
      //具体实现   
   }   
  
   public static void main(String[] args) {   
      Mp3 m = new Mp3();   
      UDisk ud = new UDisk();   
      access(m);   
      access(ud);   
   }   
}  这是我的观点欢迎老鸟指正!

解决方案 »

  1.   

    1、凡是用抽象类的地方实际上都可以用接口。
    2、凡是要抽象的地方首先考虑用接口。
    3、接口用得不爽,再考虑用抽象类。
      

  2.   

    理解的不错,没什么可纠正的...
      

  3.   

    1:接口的所有方法都是抽象的,而抽象类可以定义带有方法体的方法;
    2:一个类能够实现多个接口,而只能继承一个抽象类;
    3:接口不是类,而抽象类属于类,含有构造方法(虽然都没有用)。
      

  4.   

    学习,接口是抽象方法的集合
      

  5.   

    利用接口可以实现多重继承的功能,抽象类只能实现单继承