Golang
Go语言面向对象编程说明
11-19 09:38Golang面向对象说明
1、Golang支持面向对象编程(OOP),但是和传统的面相对象编程有区别,Golang并不是纯粹的面相对象语言,所以“Golang支持面向对象编程特性”是比较准确的说法。
2、Golang没有类(class),Go语言的结构体(struct)和其它编程语言的类(class)有同等的地位,可以理解为Go语言是基于 strcut 来实现OOP特性的
3、Golang面向对象编程非常简洁,去掉了传统OOP语言的继承、方法重构、构造函数和析构函数、隐藏的this指针等等。
4、Golang仍然有面向对象编程的继承、封装和多态的特性,只是实现方式和其它OOP语言不一样,比如继承:Golang没有extends关键字,继承是通过匿名字段来实现。
5、Golang面向对象(OOP)很优雅,OOP本身就是语言类型系统(type system)的一部分,通过接口(interface)关联,耦合性低,也非常灵活,所以也可称作面向接口编程。Golang中面向接口编程是非常重要的特性。
面向对象应用步骤
1、声明(定义结构体),确定结构体名
2、编写结构体的字段
3、编写结构体的方法
面向对象编程 - 抽象
在定义一个结构体的时候,实际上就是把一类事物共有的属性(字段)和行为(方法)提取出来,形成一个物理模型(结构体),这种研究问题的方法称为抽象。
通过代码理解抽象:
比如,定义一个银行卡的结构体,把银行卡通常会有的属性和行为提取出来(抽取一类现象)
银行卡可有的属性:账号、密码、余额
银行卡可有的行为:存钱、取钱、查询余额
type BankCard struct{
AccountNo int
Pwd string
Balance float64
}
//存钱(抽象行为)
func (b *BankCard) Deposite(pwd string, money float64) {
if pwd != b.Pwd {
fmt.Println("密码错误")
return
}
if money <= 0 {
fmt.Println("余额不正确")
return
}
b.Balance = money
}
//取钱(抽象行为)
func (b *BankCard) WithDraw(pwd string, money float64) { ... }
//查余额(抽象行为)
func (b *BankCard) Query(pwd string, money float64) { ... }