面向对象的概念
- 面向对象的程序设计是面向过程的继承和发展,程序对现实世界的抽象和描述。现实中的基本单元的物体在程序中对应的基本单元就是对象。
- 面向对象可以理解为:现实世界是由对象组成的,无论大小。万物皆对象
- 对象在程序中抽象为两个部分:
①描述对象的状态或者属性的数据(变量)
②描述对象的行为或者功能的方法(函数)
类和对象
类是一种用户自定义数据类型,可以看作是c语言中结构体的升级版。
类是有数据加功能构成的,也就是变量和函数,把变量和函数绑定在一起。
- 定义一个简单的类
#include<string>
using std::string;
class MyStu
{
public:
int id;
string name;
void setStuName(string n)
{
name = n;
}
string getStuName()
{
return name;
}
};
void main()
{
MyStu s1; //s1是MyStu这个类型给出的变量,也叫对象
s1.id = 10;
s1.name = "张三"; //类中成员数据的访问
s1.setStuName("李四"); //类中成员函数的访问
MyStu *s2 = new MyStu; //一个类对象指针指向了堆区一个无名的对象
s2->id = 20; //和结构指针的操作类似
s2->setStuName("王五");
delete s2;
s2 = NULL;
}
类的访问属性
分为三种:公有属性、保护属性、私有属性
公有属性(public):在类外或类内都可以直接访问。
保护属性(protected):在类外不能访问,只有继承的子类可以进行访问。
私有属性(private):在类外不可以直接访问,继承的子类也不能调用,只能在类内访问。
一个访问属性关键字的控制范围:从关键字开始,到下一个关键字结束(或者花括号结束),都属于该关键字的控制范围。
在面向对象的类中,数据成员绝大部分情况是私有属性,函数成员基本上是对数据的操作,一般是公有的。
class MyClass
{
int xx; //私有
public: //公有
int a;
private: //私有
int m;
protected: //保护
int x;
};
void main()
{
MyClass mc; //有了类型,再有变量,才能有内存
mc.a = 100; //访问公有成员
//再类外是无法访问私有或保护成员
//mc.m = 1;
//mc.x = 2;
}