对象的定义
对象的实现是由它的类所决定的,类制定了对象内部数据和表示,也定义了对象所能完成的操作。对象通过实例化类来创建,此对象被称为该类的实例。
类的继承
新的类可以由已存在的类通过类继承来定义, 当子类继承父类时,子类包含了父类定义的所有数据和操作,子类的实例对象包含了所有子类和父类定义的数据。子类能够改进和重新定义父类的操作,重定义使得子类能够接管父类对请求的具体操作。
抽象类
抽象类的主要目的就是为子类定义公共接口。一个抽象类将把它的部分或全部操作实现延迟到子类中。所以一个抽象类不能被实例化,在抽象类中定义却没有实现的操作被称为抽象操作。非抽象类称为具体类。
混入类
混入类是给其他类提供可选择的接口或功能的类。它与抽象类一样不能实例化,混入类要求多继承。
类继承和接口继承的区别
一个对象的类定义了对象是怎么实现的,同时也定义了对象内部状态和操作的实现。但是对象的类型只与它的接口有关。一个对象可以有多个类型,不同类的对象可以有相同的类型。
区别:
- 类继承根据一个对象的实现定义了另一个对象的实现,即类继承是代码和表示的共享机制。
- 接口继承描述的是一个对象什么时候能够被用来替代另一个对象。
在C++中接口继承的标准方法就是公有继承一个含(纯)虚成员函数的类。C++纯接口继承接近于公有继承纯抽象类,纯实现继承或纯类继承接近于私有继承。
尽管大部分的程序设计语言并不区分接口继承和实现继承的区别,但是在使用中人们还是分别对待它们。例如C++通常通过抽象类所定义的类型来操纵对象。