1.抽象类它是一个特殊的类,来源于将所有类相同但又无法确定的属性和方法抽取出来归为一个类中,具体实现由其继承的子类实现,比如睡觉这个行为,是普遍的,但具体实现却不能统一实现,因为会由具体个体不同实现的方式不同。JAVA用abstract修饰来表示抽象类和抽象方法(未具体实现的方法不确定),C++用虚函数实现即只要该类中还有虚函数,那么该类就是一个抽象类,即不是一个完整的类。
2.接口是对行为的抽象,比如吃,C++中通过抽象类实现,它是一个概念;JAVA中通过interface实现。
3.所以一个类只能继承一个抽象类,但却可以继承多个接口类,要么你是人,要么你不是人,吃这个行为,人可以,动物也可以。
4.接口比较轻量级,相对比较灵活,即插即用,不会对系统本身有质的影响,继承接口类和继承一个普通的类代价是不一样的,继承接口类就像相当于嵌入式,只需要嫁接我需要的那部分功能,其他功能砍掉,而继承普通类比较笨重,还需继承自身并不需要的部分。