一、面向对象思想:
- 编程思想:
- 面向对象核心概念:类和对象
- 面向对象的三大特征:封装、继承、多态
- go语言的“面向对象” 类不是class:—> 使用struct结构体
- 结构体的语法
- 结构体的嵌套
- 方法(go语言中和函数不太一样)
- 接口 –多态
1、面向对象OOP思想::关注的是对象
**
**
面向对象的思维方式
- 问题域中所涉及的对象有哪些,找名词
- 何为这些对象
- 设计类的过程(抽象的)
- 把对象的共同特性进行抽取。
- 共同特性:属性+行为
- 该类的字段,也叫属性,静态属性。
- 数据:变量。
- 该类的动态属性:行为也叫方法。
- 功能/行为:方法。
- 把对象的共同特性进行抽取。
- 对象,对象是某一个类中的一种(类中的一个具体存在的实例)
- 类:同一类事物的抽象描述。
- 设计类的过程(抽象的)
- 对象和对象之间的关系
- 本质是**类和类的关系 **
- 关联关系
- 聚合关系
- 继承关系
- 实现关系
- 本质是**类和类的关系 **
所谓面向对象,并不是一门语言,而是一种编程思想。编程思想在所有的编程语言中是通用的。 —— **go语言中的“面向对象” **
2、面向对象的三大特性:封装、继承、多态
- 封装性:安全性
- 继承性:类与类之间的关系。 ** go语言是通过“结构体的嵌套”来模拟继承。**
- 多态性:一个对象的多种形态。
- 静态多态:方法的重载。 go语言不支持方法的重载。
- 动态多态:多态以继承为前提,对象不同,所能调用的方法也不同(方法的重写)调用父类对象,没有重写。调用子类对象,方法重写。 go语言中是通过“接口”来模拟多态。
3、go创建类和对象
** C#中类和结构体的区别:**
- ** **类是引用类型,结构体是值类型
- **** 在结构体中可以声明字段,但是声明字段的时候是不能给初始值的。****
- 其实从本质上来说,类和结构的字段都是不能有初始值的.只不过微软在语法上允许我们在定义类的字段的时候为其赋值.但是背后微软其实是把赋值的执行代码放到构造函数中去执行的.
- ** 类中的构造器可以初始化部分字段,结构体中的构造器在必须初始化所有字段**
- ** 类可以自定义无参数构造器,结构体不可以**
- ** 类必须用new实例化,结构体可以不用**
- ** 类可以继承另一个类,也可以被另一个类继承,结构体不可以(值类型不能继承,引用类型可以)**
- ** 类支持终结器,结构体不支持**
- 结构体是值类型 ,以值的形式复制,难以知道在什么时候能安全执行终结器并释放结构体占用的非托管资源,垃圾回收器可以知道什么时候一个引用类型实例的引用不再活动,可在此之后的任何时间为这个引用类型运行终结器
****
** C#中类和结构体的相同点:**
都可包含字段、属性、构造器和方法
都可以实现接口
类和结构体的使用:*
若对象只有一些简单的数据,使用结构体;
若对象包含的数据很多,还有一些操作,则使用类。
例如,对猫这个对象,如果只用到颜色和体重,用结构体;
如果用到颜色、体重、长度、速度、灵活度等,还要控制猫的颜色根据xx条件改变、速度在xx条件要重新计算等,用类。
****
go语言Struct结构体
- struct也是一种类型。
- struct只能定义字段,方法定义在外面。
- 本文作者: 梁俊可
- 本文链接: http://ljk3d.com/2021/10/19/goLangNote/goLangBasic/08_GoLang语言入门_基础语法_Struct/
- 版权声明: 梁俊可工作室