"has-a"和"is-a"是什么意思?
What do "has-a" and "is-a" mean?
有人能解释"HAS-A"answers"IS-A"在两个类之间的含义吗。
举个例子会很有帮助。
- 汽车是一种交通工具
- 汽车有方向盘
例如:
class SteeringWheel
{};
class Vehicle
{
virtual void doStuff() = 0;
};
class Car: public Vehicle
{
SteeringWheel sWheel;
virtual void doStuff();
};
在面向对象的世界中,类可以是东西,也可以包含内容。
例如,Queue
类可以是LinkedList
类的子类(因为链表当然可以用于实现队列)。这是一种is-a
关系。您可以对链表执行的所有操作,都应该能够对队列执行。
但是,队列类也可能包含其他信息,例如链表中的项目数(为了提高效率)。
为此,它还可以定义一个名为size
的成员变量。这将是一个has-a
关系——队列不是整数的子类,它只是包含一个整数。
这是两个类之间的两种常见关系形式。
HAS-A关系是指将类Y作为组件的类X,可能通过将类Y的实例作为属性放置在类X的每个对象中来表达。
IS-A关系指的是作为类Z的类W,可能是因为类W是类Z的子类,或者在其继承图中的某个地方有类Z。知道如何处理Z类实例的代码应该能够处理W类实例,而不需要更改代码。
相关文章:
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 当我们说在执行程序时将操作系统的控制权传递给main()函数时,我们的意思是什么
- 这句话在c++中的意思是什么
- 这个typedef的意思是什么
- 这句话的意思是什么
- 意思是什么
- 这个句法的意思是什么?