类是为了把对象转换成计算机和人都懂的一个表述,封装对象的属性和行为,面向对象就只要一个特征就行了,那就是封装。即,只要有封装这个特性,面向对象就成立。
继承是为了减少代码而存在的,封装和继承之间有一个互斥的关系,那就是继承是打破封装的。
抽象类就是为面向对象的特性中的继承而生的,它是一种特殊的类。抽象类也是为了描述对象的。
接口和抽象类之间的关系:
接口是为抽象行为而生的,是一种特殊的抽象类。
接口有一个特点,它偏向于行为,即:接口关注的是行为。而抽象类它关注的是一类东西。
举个栗子:大黄是一只狗,狗可以抽象一个类,抽象出狗的一些共有的属性和行为,而接口是面向行为的:吃饭接口,走路接口。
抽象类还有一个功能,就是对接口的描述。在一些框架中通常的使用方式是先定义一个接口,由抽象类去实现这个接口。
继承是纵向扩展的,而接口是横向扩展。即,抽象类只能继承一个,而接口可以实现多个。说白了就是为了解决单继承的问题。