Java抽象类和接口的区别

简单来说 : 抽象方法 -> “是不是”,类的基本属性 ,子类实现其中的抽象方法; 接口 ->"有没有" ,类的额外功能,子类实现里面的全部方法;
接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的,
另外,实现接口的一定要实现接口里定义的所有方法,为此,我们可以多设计几个接口 -> 一个功能对应一个接口(松耦合);而实现抽象类可以有选择地重写需要用到的方法,但是也要把未实现的方法补全;
一般的应用里,最*的是接口,然后是抽象类实现接口,最后才到具体类实现。
还有,接口可以实现多重继承,而一个类只能继承一个超类,但可以通过继承多个接口实现多重继承,接口还有标识(里面没有任何方法,如Remote接口)和数据共享(里面的变量全是常量)的作用.
具体来说
海子: http://www.cnblogs.com/dolphin0520/p/3811437.html



扩展:面向对象的理解:
当我想要一辆小轿车,有自动驾驶、手动挡、开灯、喇叭等功能, 那么我可以设计多个功能接口,使得这辆汽车(自己)有这些功能,功能要各个子类自己实现;;
我的小轿车是属于车辆的类型,要有车辆的所有基本属性 ->四个*、车窗、车灯等等,那么我可以设计一个抽象父类(概念车),然后子类继承这个,那么这个子类就叫 ----->>>> 有上述功能小轿车

(如果所有子类都自己去实现,,那么相当有点麻烦,而且功能相同的类,代码就会重复,所有要用抽象父类来实现这些个接口 -> 用来理解接口-抽象类-实现子类 的层级关系);