面向思想
面向对象:将功能封装进对象,是具有功能的对象,解决问题需要哪些对象,将功能类似的对象封装在一起,用的时候找到对应
完成需求:找一个具有所需功能的对象,如果对象不存在,就去构建一个,目的简化开发并提高复用
面向过程:功能行为,解决问题需要那些步骤
面向对象是相对面向过程而言,他们都是一种思想;要做一件事情思考:是什么,为什么,怎么做,一步步去实现
通俗一点说:面向过程是要我们一步步去实现最终过程,面向对象是直接通过封装好的直接使用,达到最终结果
转到我们实际应用中:对于一个项目,要完成,首先从底层开始,从具体到一个类开始实现,搭建一个类,利用类去创建对象,对象是类的存在,面向对象首先需要去考虑创建哪些类,再利用类去创建多少个对象
类的实现和对象的创建
类是描述事务的属性和行为方式,go中的结构体刚好解决该问题,通过直接定义变量来接收结构体并且赋值,来实现对象的创建,通过首字母大小写来控制公私有
面向对象特征
封装,继承,多态
封装性:
我们通过首字母大小写对我们想公开或隐藏的数据进行公私,例子:我们通过公有化一个结构体,私有化它的内部变量,并公有化一个方法来进行对其变量进行赋值,对于其他接收这个结构体的对象而言,不能直接对结构体中的变量进行赋值,而是在创建的时候创建空结构体或者使用new来进行创建,通过其结构体实现的公开方法来进行对其变量进行赋值
封装的目的:防止外部获得管理权,将管理权赋予内部,同时外部只能通过其结构体的方法来进行调用或者赋值其变量,安全
继承性:
结构体继承:go语言中秉持组合大于继承,即结构体内嵌结构体,以此来实现继承,同时如果有名称重复,则考虑就近原则
方法继承:go中结构体内嵌结构体,子类同时还可以实现继承父类的方法,如果方法同名的话,子类还可以对方法进行重写,通知书还可以还可以调用父类的方法。
无论是属性继承还是方法的继承,子类都只能访问父类,父类不能访问子类
多态性
多态就是某一类事务的多种形态
go语言中通过接口来来实现多态,编写就扣就是一些抽象的性行为的合集,从而和实现接口的类区分开来
使得代码可以分散在不同的对象
go中通过byte来保存单字节,字符 通过rune来保存汉字