-
类是用户自定义的类型,表明某一类对象的共性和特征。
类是一种抽象类型,对象是具体的。 -
类的定义:
class 类名
{
public: //类成员的访问属性
double length;
… //声明列表
};
类成员的访问属性:public、protected、private (默认为private)
其中,公共数据成员(public)在类的外部可直接访问。
- 对象的声明和访问:
class Bird
{
char color; // 私有成员
public:
char sex;
double height;
void setColor(char ch);
};
void Bird::setColor(char ch)
{
color=ch;
}
对象的声明:
类名 对象名;
如Bird bird1;
对象的访问:
(1) 对于公有成员:
在类的外部可使用 类名.成员变量/函数 直接访问。如bird1.sex = ‘M’;
(2) 对于私有成员:
在类的外部是不可访问的,只有类和友元函数可以访问私有成员。
可在public区域定义相关函数,在类外部调用这些函数来设置私有成员的数据。
如 bird1.setColor(‘b’);
(3) 对于保护成员:
在类的外部也是不可访问的。除了类和友元函数可以访问外,在派生类中也是可访问的。
- 面向对象的3大特性
(1) 封装性:
将部分代码和数据封装在一起,隐藏这部分的属性和实现细节,仅对外公开接口,从而保证数据安全,避免被不可信的人篡改。
可通过创建类来支持封装和数据隐藏。
(2) 继承性:
表现类之间的关系,它可减少代码和数据的冗余,提高效率。
① 基类和派生类
定义形式:
class 派生类名称: 访问修饰符 基类名称
{
//声明列表
};
(未使用访问修饰符时,默认为private)
② 访问控制
派生类可访问基类的public成员和protected成员。若基类成员不想被派生类的成员函数访问,则应在基类中声明为private。
③ 继承类型(通过访问修饰符指定)
基类 | public | protected | private |
---|---|---|---|
公有继承 | public | protected | private |
保护继承 | protected | protected | private |
私有继承 | private | private | private |
④ 多继承
即一个子类有多个父类,继承了多个父类的特性。
定义形式:
class 派生类名称:继承方式1 基类名1,继承方式2 基类名2,…
{
//派生类类体
};
(3)多态性
即多种形态:一接口,多方法。
多态性允许将子类类型的指针赋值给父类类型的指针,它在C++中是通过虚函数实现的。
虚函数:
虚函数是在基类中用关键字virtual声明的函数。在派生类中重新定义基类中定义的虚函数时,会告诉编译器不要静态链接到该函数。
这样便可根据所调用对象的类型来选择调用的函数,即动态链接。