简体中文版翻译:申旻,nicrosoft@sunistudio.com
是。
继承是面向对象编程和抽象数据类型(ADT)编程的区分标志
[ Top | Bottom | Previous section | Next section ]
作为一种特化的机制。
人们抽象事物有两种角度:“部分”和“种类”。Ford Taurus是一种(is-a-kind-of-a)汽车,并且 Ford Taurus 有(has-a)引擎,轮胎等。“部分”层次已经随着ADT风格而成为软件系统的一部分。继承则增加了另一种分解的角度。
[ Top | Bottom | Previous section | Next section ]
通过 :public 语法:
我们有几种方式声明以上的关系:
(注意: 本 FAQ 的论述仅与公有继承(public inheritance)有关; 私有和保护继承并不相同)
[ Top | Bottom | Previous section | Next section ]
可以。
派生类对象是基类对象的一种。因此从派生类指针到基类指针的转换是非常安全的,并且始终会发生。例如,如果有一个 car 类型的指针,而实际上指向了 vehicle,这种从 Car* 到 Vehicle*
的转换是非常安全的和常规的:
(注意: 本 FAQ 的论述仅与公有继承(public inheritance)有关; 私有和保护继承并不相同)
[ Top | Bottom | Previous section | Next section ]
[ Top | Bottom | Previous section | Next section ]
为了使派生类在将来基类改变时不受影响。
派生类无法访问基类的私有成员。这样在对基类私有成员作任何改变时,就有效地锁定了派生类。
[ Top | Bottom | Previous section | Next section ]
类有两套截然不同的接口,它们分别面向两个截然不同的客户:
除非你期望你的所有子类全部由你自己的团队建立,否则你应该考虑让基类部分成为private:,并且用 protected:来内联供子类访问基类私有数据的访问函数。使用这种方法,私有部分可以被改变,但是派生类的代码不会被破坏(除非你改变了protected的访问函数)。
[ Top | Bottom | Previous section | Next section ]
E-mail the author
[ C++ FAQ Lite
| Table of contents
| Subject index
| About the author
| ©
| Download your own copy ]
Revised Apr 8, 2001