在面向对象编程中主要有三大特征:
1.封装
2.继承
3.多态
1.封装,即隐藏对象的属性和实现细节,仅对外公开接口,我在以往的编程时,经常发现,一个模块与外界耦合度越低.越好复用与移植.
通俗的讲: 面对对象编程时,我们需要把我们描述对象的类包装起来.让描述对象的数据与行为看上去是一个整体.而不是像C语言一样分散.在C++中,声明类的方式有两种关键字
struct 和 class .
struct 我们见过.它在C语言中是结构体声明的关键字.在C++中,除了声明结构体,它还多出两种特性.
例:
struct test{
public:
int a;
int fun(){
return a*3;
}
};
第一种特性就是,结构体里不再是单纯的数据了.而且可以在这里面实现函数.这样,我们的类在描述对象时就方便了很多.可以在一个数据结构里描述对象的属性与行为.
第二种特性就是权限:
在C中,struct 声明的结构体,实例化对象后,对象中的成员变量,是可以被任意访问的.在C++中,这个默认的特性没有改变.但是它却可以增加权限说明关键字,来说明那些数据与行为是可以被访问的.那些数据是不可被访问的.C++的类中,
有三种权限
1.public //公有访问权限,可以被任何人访问
2.protected //保护访问权限,可以被其子类访问,不能被类外访问
3.private//私有访问权限.只可被自己的成员访问.
而 struct 的默认访问权限是公有的.所以它的所有成员都是可以被任何人访问的.但是如果你对它的成员使用了其它权限,那么,它的成员只能被相应权限的人访问.
class关键字与struct最大的不同,就在于默认的访问权限.class的默认访问权限是私有的.而struct是公有的.
class更常用一些.因为根据"不和陌生人说话"原则, 类的内部成员和外界只能保留最小接口.所以只有预留的接口函数才能被外界访问,是公有的.其它成员都都应该是私有的或是保护的访问权限.