(一三七)继承:is-a关系
来源:互联网 发布:mac电脑开机密码设置 编辑:程序博客网 时间:2024/04/28 21:11
C++有三种继承方式:
①公有继承;
②保护继承;
③私有继承。
公有继承是一种is-a关系(也可以理解为is-a-kind-of,一种,但is-a是术语)。任何可以对基类执行的操作,也可以对派生类执行。
(1)公有继承不建立has-a关系,即一个类中包含另一个类。例如:
class Name
{....
}
class Student
{
Name name;
int id;
....
}
就是一种has-a关系,将Name对象作为Student类的数据成员。
(2)公有继承不能建立is-like-a 关系。
不确定:这个关系貌似是指先有一个共同的类,然后以is-a关系或has-a关系,在这个共同的类的基础上定义的相关的两个/多个类。
继承可以在基类的基础上添加属性,但不能删除基类的属性。
(3)公有继承不建立is-implemented-as-a(作为...来实现)关系。
例如,数组可以用于实现栈,但不能从数组类派生出栈类来,因为栈不是数组,且也可以通过其他方法来实现栈(如链表)。
不过不明白书上这一句:正确方法是,通过让栈包含一个私有Array对象成员来隐藏数组实现。——这句话意思是这种方法是用数组实现栈的方式么?强调说不能从数组派生出栈?我觉得是。
(4)公有继承不建立uses-a关系。
例如A类和B类关系并不大(但有一点关系),然后从A类派生出B类,理论上是可以实现的,只不过这样A类很多数据成员、方法就没意义了。
在C++中,可以使用公有继承来建立has-a、is-implemented-as-a或uses-a关系,然而,这样做,按书上说法是会导致编程方面的问题,因此应使用is-a关系。
- (一三七)继承:is-a关系
- 继承:is-a关系
- 继承--is-a关系
- "is-a"关系不能决定继承
- C++ primer 十六 继承:is-a关系
- 浅析C++中的is-a和has-a关系(公有继承、包含、私有继承)
- 再谈C++中的is-a关系(确定你的public继承塑模出is-a关系)
- C++之确定你的public继承塑模出is-a关系(32)---《Effective C++》
- java(未检出20130729) String、StringBuffer、类与类之间关系:依赖关系Use-a、.聚合关系has-a、组合继承(“is-a”)、抽象类、接口
- C++继承体系中Is a 关系 和has a关系
- C++继承体系中Is a 关系 和has a关系
- java 继承(is-a)
- is-a关系
- Java 继承和聚合/组合的关系以及 Is A,Has A
- hibernate的继承关系映射(一)
- "is a"关系和"has a"关系
- 条款32:确定你的public继承塑模出is-a关系
- 条款32:确定你的public继承塑模出is-a关系
- dubby带你学java---WeakReference
- (一三六)基类——第十三章
- Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM)
- 1002. A+B for Polynomials (25)
- 51Nod 1080 两个数的平方和(数论)
- (一三七)继承:is-a关系
- (一三八)多态公有继承
- (一三九)静态联编和动态联编
- redis操作命令
- ubuntu系统安装jdk
- 【ubuntu拷贝目录】cp: omitting directory”错误的解释和解决办法
- 一些工具和常用配置
- Ubuntu14.04下如何配置固定IP
- (一四〇)访问控制:protected