一、认识三种关系
1. 继承关系【is-a】
“is-a”:派生类对象也是一个基类对象,基类对象能够做的任何操作,派生类对象也能够做。如公有继承就是 “is-a” 继承关系。
<耦合度最高>
举例:苹果是一种特定的水果。
注意:
公有继承不能建立 is-implemented-a (作为...来实现)关系。
公有继承不能建立 is-like-a 关系。
2. 组合关系【has-a】
“has-a” :指一个类中包含另一个类的对象。
<耦合度其次>
举例:午餐中包含有苹果。
3. 使用关系【uses-a】
一个类部分的使用另一个类。通过类之间成员函数的相互联系,定义友元或对象参数传递实现。
<耦合度最低>
二、综合实例
#include <iostream>
using namespace std;
class A{
public:
void funcA()
{
cout<< "funcA" <<endl;
}
int getx()
{
return this->x;
}
private:
int x;
};
class B{
public:
void funcB()
{
cout<< "funcB" <<endl;
}
A a; //类B拥有类A的对象,即 B has A , 类B 依赖于 类A
};
class C{
public:
void funcC(A &a) //类C的成员函数需要类A的对象作为参数,即 C use A
{
cout<< "funcC" <<endl;
}
};
class D :public A{ //类D继承自类A,即 D is A
public:
void funcD()
{
cout<< "funcD" <<endl;
cout<< getx() <<endl;
}
};