golang面向对象实现

面向对象编程三大特点:封装、继承、多态。

1. 构造函数

Go不支持构造器。如果某类型的零值不可用,需要提供NewT(parameters)函数,用来初始化T类型的变量。按照Go的惯例,应该把创建T类型变量的函数命名为NewT(parameters),若一个包中只含有一种类型,则函数名为New(parameters)。

包含NewT()函数的包的结构体应该首字母小写,以使结构体对外不可引用,只能通过NewT()创建结构体。相应的,结构体内所有字段也应该小写,被隐藏,方法要根据实际情况确认。

// oop/employee/employee.go
package employee
import "fmt"

type employee struct {
        firstName string
        lastName string
        totalLeaves int
        leavesTaken int
}

func New(firstName string, lastName string, totalLeaves int, leavesTaken int) employee{
        e := employee{firstName, lastName, totalLeaves, leavesTaken}
        return e
}

func (e employee) LeavesRemaining(){
        fmt.Printf("%s %s has %d leaves remaining", e.firstName, e.lastName, e.totalLeaves-e.leavesTaken)
}

//oop/main.go
package main
import "oop/employee"

func main(){
        /*
        e := employee.Employee{
                FirstName: "wang",
                LastName: "qing",
                TotalLeaves: 30,
                LeavesTaken: 20,
        }
        */
        e := employee.New("wang", "qing", 30, 20)
        e.LeavesRemaining()
}

2. 继承

Go不支持继承,但他支持组合(composition)。组合的一般含义定义为“合并在一起”。

一般通过嵌套结构体进行组合。

3. 多态

Go通过接口来实现多态。在Go中,一个类型如果定义了接口所声明的全部方法,那该类型就实现了该接口。

所有实现了接口的类型,都可以把它的值保存在一个接口类型的变量中。在 Go 中,我们使用接口的这种特性来实现多态

 

参考:

1. Go 系列教程(Golang tutorial series) go语言中文网

转载于:https://www.cnblogs.com/embedded-linux/p/11128985.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值