面向对象
前言
面向过程的语法基本复习完了,能记多少全凭天意。
然后就是c++面向对象的特性了,主要是从class类的角度。
正文
OOP(Object Oriented Programming)即面向对象编程。本质上还是一种思想,通过编程中的事物抽象成对象编程。
与此相关的名词还有OOD(面向对象设计)、OOA(面向对象分析)等。
学c++的时候就知道它兼容c语言特性,所以外界的声音就是c++不单单是面向对象的语言。
像java、c#可能就是纯面向对象语言的代表了。
不过毕竟是一种思想抽象,所以也不能百分之百说就是面向对象好,面向对象不好。还是要取决于使用场景。
面向过程
1 |
|
看面向过程的时候,结构体定义这种人物,函数定义行为或者进行的操作,比如砍了他一下扣多少血之类的。ROLE zs,ls。 Act(zs,ls)
当然稍大的项目,使用c++开发的话,就不会完成使用面向对象的思想,面向过程固然有用武之处
封装
封装就是可以把已有的事物封装成类,这种类可以让指定的属性被外人看到,也可以设置一些不能被外人多看到的属性。
换做代码:
1 | class box |
有公有的区域,也有私有的区域。
继承
继承就是让一个类的对象可以获取另一个类的对象的属性。能够按照一定的等级划分。
被继承的类可以称为“基类”、“父类”。
通过继承创建的类一般被称为“子类”、“派生类”的说法。
1 | class<派生类名>:<继承方式><基类名>{ |
多态
是对一个类的实例在相同方法,不同情形下有不同的表现。
多态是在继承的基础上实现。
后面在拆开解
类
1 | class 类名{ |
在封装继承多态的时候举例了代码,定义一个类的模板就是如此。
1 | struct 结构体名称{ |
其实从结构体和类来比较,大致上有相似的感觉,只不过类还能划分对象,还有一些高级的功能。
而且虽然结构体也能塞函数,但是不太好,毕竟设计的目的就是为了涵盖一些变量。
1 | class ROLE{ |
在没有定义
public:
的时候,类的成员都是私有的,未公开。像结构体默认就是公有的。
1 | class ROLE{ |
这样才能合理初始化。
一个角色除了基础属性外,还会有回复的能力
1 | class ROLE{ |
当然这种每秒回多少,我们肯定不希望被其他人访问修改。所以将这个变量放入private:
中。
不过每次初始化要调用的函数放到里面的话不利于调用。
1 | class ROLE{ |
这样一来,每次创建一个对象,都可以通过对象.Init();
去初始化这个hpadd。
然后就是关于对象定义的问题,公有变量都存在public中,但是它可以多次定义:
1 | class ROLE{ |
因为还是处于public:
下所以还是能够被外部访问,但是不是很建议这么写,太麻烦了。
结语
简单过一遍封装继承多态的概念,和class创建的方式。