(一)封装-属性和行为作为
定义语法:class 类名{访问权限:属性/行为};
类中的属性和行为统称为成员
属性称成员属性、成员变量
行为称为成员函数、成员方法
#include <iostream>
using namespace std;
const double pai=3.14;
class circle//class代表设计一个类,类后面紧跟着的为类的名称
{
public://访问权限------公共权限
int r;//属性
double calculateZC()//行为------获取圆的周长
{
return 2*pai*r;
}
};
int main()
{
circle c1;//通过圆类创建一个具体的圆 (对象)
c1.r=10;
cout<<"圆的周长为:"<<c1.calculateZC()<<endl;
return 0;
}
案例------设计学生类
#include <iostream>
#include <cstring>
using namespace std;
class student
{
public:
string name;
int ID;
void showstudent()
{
cout<<"姓名:"<<name<<endl;
cout<<"ID:"<<ID<<endl;
}
};
int main()
{
class student s;
s.name="张一";
s.ID=10425;
s.showstudent();
return 0;
}
#include <iostream>
#include <cstring>
using namespace std;
class student
{
public:
string name;
int ID;
void showstudent()
{
cout<<"姓名:"<<name<<endl;
cout<<"ID:"<<ID<<endl;
}
void setname(string name1)
{
name=name1;
}
void setID(int ID1)
{
ID=ID1;
}
};
int main()
{
class student s;
s.setname("张一");
s.setID(10425);
s.showstudent();
return 0;
}
(二)封装-访问权限
访问权限:1.公共权限 public 成员类内可以访问,类外可以访问
2.保护权限 protected 成员类内可以访问,类外不可以访问
3.私有权限 private 成员类内可以访问,类外不可以访问
#include <iostream>
#include <cstring>
using namespace std;
class person
{
public:
string name;
protected:
string car;
private:
int password;
public:
void f()
{
name="张一";
car="自行车";
password=123456;
}
};
int main()
{
person p;
p.name="李二";
}
类内可以访问
类外不可以访问
(三)封装-C++中的class与struct
C++的class与struct的区别默认的访问权限不同,class默认的权限是private私有,struct默认的权限是公共public
#include <iostream>
using namespace std;
class c
{
int a;//默认权限私有
};
struct s
{
int b;//默认权限公共
};
int main()
{
/*c c1;
c1.a;*/
s s1;
s1.b=100;
cout<<s1.b;
return 0;
}
(四)封装-成员属性私有化
优点:1.将所有成员属性设为私有,可以控制自己的读写权限
2.对于写权限,可以检测数据的有效性
#include <iostream>
using namespace std;
#include <cstring>
class person
{
public:
void setname(string name1)
{
name=name1;
}
string getname()
{
return name;
}
int getage()
{
age=18;
return age;
}
void setfamily(string family1)
{
family=family1;
}
private:
string name;//可读可写
int age;//只读
string family;//只写
};
int main()
{
person p;
p.setname("张一");
cout<<"姓名:"<<p.getname()<<endl;
cout<<"年龄:"<<p.getage()<<endl;
p.setfamily("李二");//只写
}