- 属性和行为
- 案例设计
- 案例1
- 案例2
- 访问权限
- class和struct区别
- 成员属性置为私有的优点
C++面向对象的三大特性为 :封装、继承、多态。C++认为万事万物皆为对象,对象上有其属性和行为。例如人可以看作一个对象,属性有姓名、年龄、性别、身高、体重等。具有相同性质的对象,我们可以抽象称为类,人属于人类,车属于车类。 属性和行为
封装:封装是C++面向对象的三大特性之一。
封装的意义:将属性和行为作为一个整体 ,表现生活中的事物。将属性和行为加以权限控制。
建立一个圆类,并求圆的周长。
#include案例2using namespace std; //圆周率 const double PI = 3.14; //设计一个圆类,求圆的周长 //圆的周长 = 2*PI*r //class代表设计一个类,类后面跟着类名称 class circle { //权限 //公共权限 public: //属性 //圆的半径 int r; //行为 //获取圆的周长 double calculate() { return 2 * PI * r; } }; int main() { //通过圆类,创建具体的圆(对象) //实例化就是通过一个类,创建一个对象的过程 circle c1; //给圆对象的属性进行赋值 c1.r = 10; cout << "圆c1的周长为:" << c1.calculate() << endl; system("pause"); return 0; }
设计一个学生类,属性有姓名和学号。可以给姓名和学号赋值,可以显示学生的姓名和学号。
#include访问权限#include using namespace std; //设计一个学生类,属性有姓名和学号,可以给姓名和学号赋值,可以显示学生的姓名和学号 class Student { //公共权限 public: //类中的行为和属性统一称为成员 //属性 成员属性,成员变量 string sname; int sid; //行为 成员函数,成员方法 void show() { cout << "学生的姓名为" << sname << endl; cout << "学生的学号为" << sid << endl; } //通过行为来进行赋值操作 //给姓名赋值 void setName(string name) { sname = name; } //给学号赋值 void setId(int id) { sid = id; } }; int main() { Student s1; Student s2; //s1.sid = 01; //s1.sname = "张三"; s1.setName("张三"); s1.setId(1); s1.show(); s2.sid = 2; s2.sname = "李四"; s2.show(); system("pause"); return 0; }
类在设计时,可以把属性和行为放在不同权限下加以控制。访问权限有三种,public,private,protected。
#includeclass和struct区别using namespace std; //三种访问权限 //公共权限 public 成员 类内可以访问,类外也可以访问 //保护权限 protected 成员 类内可以访问,类外不可以访问 父亲的车,儿子也可以开 //私有权限 private 成员 类内可以访问,类外不可以访问 父亲的银行卡密码,儿子不可以知道 class Person { public: string p_name; protected: string p_car; private: int p_password; public: void func() { p_name = "张三"; p_car = "宝马"; p_password = 123456; } }; int main() { //实例化一个对象 Person p1; p1.p_name = "李四"; // p1.p_car = "奔驰"; //保护权限内容,类外访问不到 // p1.p_password = 123; //私有权限内容,类外访问不到 system("pause"); return 0; }
C++中class和struct的唯一区别在于默认的访问权限不同。struct默认权限为公共,class默认权限为私有。
#include成员属性置为私有的优点using namespace std; //class和struct的区别 class C1 { int number; //默认权限是私有 }; struct C2 { int number; //默认权限是公共 }; int main() { //实例化对象 C1 c1; C2 c2; // c1.number = 10; //class默认权限私有,因此类外不可以进行访问 c2.number = 10; //struct默认权限公共,因此类外可以进行访问 system("pause"); return 0; }
优点:可以自己控制读写权限。对于写权限,可以检测数据的有效性。
#include#include using namespace std; //成员属性设置私有 //可以自己控制读写权限 //对于写入操作可以检测数据的有效性 class Person { public: //设置姓名 void setname(string name) { p_name = name; } //获取姓名 string getname() { return p_name; } //设置年龄 void setage(int age) { if (age < 0 || age>150) { cout << "请输入正确年龄,否则默认设定年龄为0" << endl; p_age = 0; return; } p_age = age; } //获取年龄 int getage(){ return p_age; } //获取爱人 只写 void setlover(string lover) { p_lover = lover; } private: //可读可写 string p_name; //只读 int p_age; //只写 string p_lover; }; int main() { //实例化对象 Person p1; p1.setname("张三"); cout << "姓名:" << p1.getname() << endl; p1.setage(18); cout << "年龄:" << p1.getage() << endl; p1.setlover("美女"); //可写 外部不可读 // cout << "爱人:" << p1.p_lover << endl; system("pause"); return 0; }



