抽象类有普通方法和抽象方法,普通方法可以实现方法细节,在java中叫做可以有方法体,抽象方法却不能有方法体。而抽象类不能实例化,除此之外跟其他类没区别。
而接口则其内部的方法全部是抽象方法,
在java中,类只能继承一个类,后者不管是抽象类还是普通类都可以。但是可以接多个接口。
抽象类是物的抽象,接口是动作的抽象。
一个类继承抽象类,必须实现抽象类里的抽象方法,一个类接了多个接口,那他必须实现接口里的全部方法。
实际工作中接口用的比较多。
假如把动物定成一个抽象类,类中有吃和繁殖这两个所有动物都有的抽象方法。而飞,行走,游泳,都分别定义为一个接口。比如定义一个麻雀类,则继承动物,接飞,走这两个接口。而定义一个青蛙类,则继承动物,接行走,游泳这两个接口。
在上面,一共出现了五个方法,吃,繁殖,飞,行走,游泳,都是抽象方法。就拿吃来说,所有的动物都具备这个能力,但是又有各自不同的特点,有吃素的,有吃肉的,没什么共性,所以只能各自种类实现各自不同的吃。
抽象方法的初衷可能就是强制要求类必须实现这个方法,
规范代码,产生约束,减少bug
https://blog.csdn.net/u012092924/article/details/78342193
http://www.cnblogs.com/dolphin0520/p/3811437.html