哦,我的朋友,看在列宁的份上,答应我一定要了解完结构体再来阅读这篇文章,好吗?
好了,不闹了,大家看到标题应该也知道,今天我们要讲的就正式涉及到c++的面向对象编程了。c++面向对象的三大特性包括,封装,继承以及多态,而今天要讲的便是封装这一特性。
1.何为对象与类
C++认为万事万物都皆为对象!
而对象上有其属性和行为
例如:
人可以作为对象,属性有姓名、年龄、身高、体重…,行为有走、跑、跳、吃饭、唱歌…
车也可以作为对象,属性有轮胎、方向盘、车灯…,行为有载人、放音乐、放空调…
而具有相同特征的对象便可以抽象为一个类
例如
黄种人,白种人,黑种人等都是人,便可以抽象为一个人类
小兔子,小乌龟,小鸡子都是动物,便可以抽象为一个动物类
(注意,面向对象是种编程思维上的进步,其重心绝不是在语法之上,一定要充分去理解这种思想)
2.何为封装
将属性和行为作为一个整体即为封装,表现生活中的事物将属性和行为加以权限控制
封装的高明之处在于它将一个类中的对象封起来,加了一层隔膜,让类中的对象处于一种安全不易更改与丢失的状态其具体的语法实现则与结构体十分相似,可以说封装性便是c中结构体的进一步演化
就论具体的区别而言,类与结构体只有一个区别,那就是权限,访问类中对象的权限。
在类中有三种权限:公共,保护与私有。其中公共权限的对象与结构体相同,而保护与私有权限的则只能类内访问,即在类的外部是无法更改其数据的或读取,唯有类内的成员可以访问。
也就是说如果你想要在类外调用公共权限以外的对象,便只能提前在类的公共权限处编写一个成员函数来访问然后在类外调用这个函数,这种类型的函数又被叫做接口。如此一来可操作性便大大提升,你完全可以做到让一个对象只读或只写或可读可写。(这个的具体实现下次再说了)
1 | class Person |
上面的代码就是一个类的具体实现,其实可以看出其与结构体对比就仅仅多出来一个权限,语法上进步不大,可思想上却是一次飞跃。
好了,完了但没完全完,未完待续。。。。