序言
大一的时候学过一些C++的东西,但是主要以C为主,后来C++也很少用到,现在重新学习C++基础知识。
封装
面向对象程序设计最基本的特性。
作用:
[1] 把属性和方法进行封装:把数据(属性)和函数(方法)合成一个整体,在计算机中用类和对象实现
[2] 对属性和方法进行访问控制:访问权限的限制。把客观事物封装成抽象的类,并且类可以把自己的属性和方法只让可信的类或者对象操作,对不可信的进行信息的隐藏
类和对象
类:类是把属性和方法进行封装,同时对类的属性和方法进行访问控制。通常类的定义包含两部分内容
[1] 属性:如“人类”这个类,属性包括姓名、年龄、体重等
[2] 方法:如“人类”这个类,方法包括吃饭、睡觉、说话等行为
- 对象:现实世界的实体抽象,如“人”、“自行车”等
类的定义
class 类名
{
public:
//方法或属性
protected:
//方法或属性
private:
//方法或属性
};
//类定义时,public,private和protected关键词的出现顺序可以是任意的
class Point
{
public:
void setPoint(int x, int y);
void printPoint();
private:
int xLabel;
int yLabel;
protected:
int quadrant;
};
类的实现
类的实现就是完成其方法的过程,上述代码只是完成了属性和方法的声明。[1] 类定义时完成对成员函数的定义
[2] 类定义的外部进行完成:需要加作用域操作符
//类内实现:点类
class Point
{
public:
void setPoint(int x, int y)
{
xPos = x;
yPos = y;
}
protected:
...
private:
...
};
//类内实现:圆类
class Circle
{
private:
double r; //圆类的半径属性
public:
void setR(double r) //设置圆的半径
{
this->r = r;
}
double getR() //获取圆的半径
{
return this->r;
}
};
//类外实现
void Point::setPoint(int x, int y)
{
xPos = x;
yPos = y;
}
- 类的使用
int main()
{
Point M; //类创建对象
M.setPoint(10, 20); //函数调用
M.printPoint(); //函数调用
cout<< M.xPos <<endl; //通过对象访问属性
return 0;
}
类的成员访问权限
为什么要有访问权限限制,有些需要给外面看的,也就是对外接口,那么就是public;不想让别人知道内部的实现细节,那么就是private;如果不想让别人知道,想让自己的孩子什么都知道(这里涉及到继承),那么就可以作为protected
public:
- 可以被 该类中函数 + 其友元函数 + 派生类的函数 + 该类的对象访问;
protected:
可以被 该类中函数 + 其友元函数 + 派生类的函数 访问;
不能被该类的对象访问
private:
只能由 该类中函数 + 其友元函数 访问;
不能被 该类的对象和派生类(子类) 访问
类的继承方式
public 继承:公有继承时,不改变基类成员的访问权限
protected 继承:保护继承时,将基类中public成员变为子类的protected成员,其它成员的访问权限不变
private 继承:私有继承时,使得基类所有成员在子类中的访问权限变为private
Acknowledgements:
http://www.cnblogs.com/mr-wid/archive/2013/02/18/2916309.html
http://www.cnblogs.com/cocos2d-html/p/3629146.html
http://cnmtjp.blog.51cto.com/204390/36548
http://www.cnblogs.com/BeyondAnyTime/archive/2012/05/23/2514964.html
2017.09.25