Make sure public inheritance models "is –a " 如果令clsss D 以public的形式继承class B,你便是告诉编译器说,每一个类型为D的对象同时也是一个类型为B的对象,反之不成立.你的意思是B比D表现出更一般化的概念,而D比B表现出更特殊化的概念.你主张"B"对象可以派上用场的任何地方,D对象一样可以派上用场.因为每一个D对象都是一个B对象.反之如果你需要一个D对象,B对象无法效劳,因为虽然每个D对象都是一个B对象…
“public继承”意味is-a.适用于base classes身上的每一件事情一定也适用于derived classes身上,因为每一个derive class对象也都是一个base class对象.…
1.public继承表示Is-A关系,也就是满足里氏代换.与之相对应的,private继承表示根据某物实现出,不满足里氏代换.子类对象初始化父类引用,编译通不过. 2.考虑下面的需求,企鹅继承鸟,Bird暴露virtual Fly接口.现在出问题了,因为Penguin不会飞,不提供Fly接口.怎么办? a.Penguin在重写的Fly方法中,抛出一个异常. b.上面的解决办法不好,因为它表示的意义不是说Penguin不会飞,而是说尝试让Penguin飞,会出现错误.最大的问题是:运行期才发现错误…
NOTE : 1."public继承"意味is-a.适用于base classes  身上的每一件事一定也适用于derived classes身上,因为每一个derived class 对象也都是一个 base class 对象.…
这一章都在讲述继承的关系.可以举个例子说明: 父类是水果,子类是苹果,苹果是一种(is-a)水果,但是水果不一定就是苹果. is-a并不是唯一存在classes之间的关系.另两个常见的关系是has-a(有一个)和is-implemented-in-term-of(根据某物实现出). 这些关系将在后面一一讲述. ◆总结 1.“public继承”意味着is-a.适用于base classes身上的每一件事情一定也适用于derived classes身上,以为每一个derived class对象也都是…
这一条款是说的是公有继承的逻辑,如果使用继承,而且继承是公有继承的话,一定要确保子类是一种父类(is-a关系).这种逻辑可能与生活中的常理不相符,比如企鹅是生蛋的,所有企鹅是鸟类的一种,直观来看,我们可以用公有继承描述: class Bird { public: virtual void fly(){cout << "it can fly." << endl;} }; class Penguin: public Bird { // fly()被继承过来了,可以覆…
32 : Make sure public inheritance models "is-a." 0 引言 Inheritance and Object-Oriented Design 从这一章开始,我们将阅读到有关程序设计的条款. 如果你之前是其他程序的编写者,要做好对C++特色OOP与众不同的准备.你将对OOP的概念产生变化. 1 public继承和is-a之间的等价关系 1.1 is-a的字面含义 子类对象 即 是一个 父类对象 derived class object IS A…
本文senlie原版的,转载请保留此地址:http://blog.csdn.net/zhengsenlie 经验:"public继承"意味 is-a.适用于 base classes 身上的每一件事情一定也适用于 derived classes 身上, 由于每个 derived classes 身上,由于每个 derived class 对象也都是一个 base class 对象. 演示样例: class Person {...}; class Student: public Pers…
复合(composition)的意义和public继承完全不同. 在应用域(application domain),复合意味has-a(有一个).在实现域(implementation domain),复合意味is-implemented-in-terms-of(根据某物实现出).…
如果说public是一种is-a的关系的话,那么复合就是has-a的关系.直观来说,复合就是在一个类中采用其他类的对象作为自身的成员变量,可以举个例子,像下面这样: class Person { private: string Name; // 复合string类型的变量 PhoneNumber HomeNumber; // 复合PhoneNumber对象 PhoneNumber TelephoneNumber; }; 我们一般会说人有名字,有家庭电话,有手机电话等,但我们一般不会说人是一个名字…