Golang_接口

Golang

1 接口

接口的定义比较抽象,但是如果想象实际的物体就比较好理解了

比如USb接口,和很多手机都可以相接。

可以说接口形成了一种规范。

实例1

package main
import "fmt"

//声明一个接口
type Usb interface{
	//声明两个方法
	Start()
	Stop() 
}
type Phone struct{

}
type Camoro struct{

}
func (p Phone) Start(){
	fmt.Println("手机工作...")
}
func (p Phone) Stop(){
	fmt.Println("手机停止工作...")
}
func (c Camoro)Start(){
	fmt.Println("相机工作...")
}
func (c Camoro)Stop(){
	fmt.Println("相机停止工作...")
}
type Computer struct{

}
//编写Work方法接受Usb接口类型的变量
//只要是实现了USB接口,所谓实现USB接口,就是指实现了USB接口声明的所有方法
func (co Computer) work(usb Usb){
	usb.Start()
	usb.Stop()

}
func main(){
	computer := Computer{}
	phone := Phone{}
	camoro := Camoro{}
	computer.work(phone)
	computer.work(camoro)
}

上面的实例首先定义了两个结构体和USb接口,通过结构体和Usb接口的联系输出。
比较抽象

实例2

type Usb interface{
	Say()
}
type Student struct{

}
func (stu *Student)Say(){
	fmt.Println("Say...")
}
func main(){
	var stu Student
	var u Usb = &stu
	u.Say()
	fmt.Println(u)

}

上面实例通过指针类型传值
在Go的底层指针都有优化

实例3
在这里插入图片描述

package main
import "fmt"

type Monkey struct{
	name string
}
func (m *Monkey)climbing(){
	fmt.Println(m.name,"会爬树")
}
type littleMonkey struct{
	Monkey
}
type bird interface{
	flying()
}
func (b *Monkey)flying(){
	fmt.Println(b.name,"会飞")
}
type fish interface{
	swimming()
}
func (f *Monkey)swimming(){
	fmt.Println(f.name,"会游泳")
}

func main(){
	monkey := littleMonkey{
		Monkey{
		name : "孙悟空",
	},
}
	monkey.climbing()
	monkey.swimming()
	monkey.flying()
}

由实例可知,接口是继承的补充。
接口可以说是完成了继承不可以做的事情

2 继承和接口区别

在这里插入图片描述
继承的价值在于代码的复用性,和可维护性
接口的价值在于设计
接口与继承更加灵活。
继承是实现is a的关系
接口实现的like a的关系
接口在一定程度上实现了代码的解耦

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值