抽象类和接口都是支持抽象类定义的两种机制。包含抽象方法的类是抽象类,抽象类由abstract修饰,抽象类中的抽象方法只有定义没有实现,抽象类中可以包含非抽象的方法。继承抽象类的子类必须实现父类的抽象方法,否则子类也是抽象类。
接口是一种特殊形式的抽象类,是一种规范,接口中的所有方法都是抽象的,只有定义没有实现,接口中的成员变量都是public static final类型的,通过接口可以间接的实现多重继承。
抽象类强调的是对象是什么,接口强调的是实现接口的对象能做什么。比如卡车、汽车都是对车的抽象,可以把车定义为一个抽象类;吃东西是一个动作,人也可以吃东西,动物也可以吃东西,可以把吃东西定义成一个接口,让人和动物去实现。