go语言三大特性——封装、继承,多态

1、封装

封装实现的步骤:
在这里插入图片描述

2、继承

== 问题:== 出现代码冗余,而且代码不利于维护,同时也不利于功能的扩展
通过继承解决代码复用问题,即当多个结构体存在相同的属性(字段)和方法时,可以从多个结构体中抽象出结构体,在该结构体中定义这些相同的属性和方法
在这里插入图片描述

嵌套匿名结构体的基本语法

type Goods struct{
    Name string
    Price float64
}
type Book struct{
    Goods  //此处嵌套匿名结构体Goods
    Writer string
}

在这里插入图片描述

结构体中嵌入两个(或多个)匿名结构体,如果两个匿名结构体有相同的字段和方法(同时结构体本身没有同名的字段和方法),在访问时,必须明确指定匿名结构体的名字,否则会报错。
在这里插入图片描述

多继承

一个struct嵌套了多个匿名结构体,那么该结构体可以直接访问嵌套的匿名结构体的字段和方法,从而实现多重继承
在这里插入图片描述
在这里插入图片描述

3、接口

多态特性主要通过接口来实现

interface接口可以定义一组方法,但是不需要实现,并且interface不能包含任何变量。一个接口定义了一套方法,若一个具体类型要实现该接口,必须实现接口类型定义中所有方法

说明:

  1. 接口中所有方法都没有方法体,即接口中方法都是没有实现的方法。接口体现了程序设计的多态和高内聚低耦合的思想。
  2. golang中接口,不需要显示的实现,只要一个变量,含有接口类型中所有方法,那么这个变量就实现了这个接口。golang中没有__implement__这个关键字。
注意事项和细节:

1、 接口本身 不能创建实例 ,但是可以指向实现了该接口的自定义类型的变量(实例)
134645646
在这里插入图片描述
7、Golang接口中不能有任何变量
8、一个接口(如接口A)可以继承多个别的接口(如接口B、C),如果要实现A接口,也必须将B、C接口的方法全部实现。
在这里插入图片描述
9、interface类型默认是一个指针(引用类型),如果没有对interface进行初始化就使用,那么会输出nil
10、空接口interface{},没有任何方法,所以所有类型都实现了空接口,可以将任何一个变量赋给空接口。★★★
在这里插入图片描述
注意:
在这里插入图片描述
在这里插入图片描述

接口和继承

1、当A结构体继承了B结构体,那么A就自动继承了B的字段和方法,并且可以直接使用
2、当A结构体需要扩展某些功能时,同时不希望破坏继承关系,可以去实现某个接口即可——接口是对继承的补充

继承::解决代码的复用性可维护性

接口:设计,设计好各种规范(方法), 让其自定义类型去实现这些方法

接口在一定程度上实现代码解耦

4、多态

多态特性主要通过接口来实现,可以按照统一的接口来调用不同的实现,这时接口就呈现不同的形态。

接口实现多态的两种形式:
1、多态参数
在一个接口中,只要这类型参数实现了接口中方法,就可以被这个接口接受,体现接口多态
2、多态数组
接口数组中可以存放多种结构体,只要结构体实现了接口中方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值