多态:接口的多种不同的事项方式
在Golang中,多态以接口实现,可以按照统一的接口来调用不同的实现,这时接口变量就呈现多种不同的形态。
接口体现多态有两种表现方式:
- 多态参数;
- 多态数组。
下面以一个案例详细演示多态:
package main
import "fmt"
//声明一个接口
type Usb interface {
//声明两个没有实现的方法
Start()
Stop()
}
type Phone struct {
name string
}
//让Phone实现Usb接口的方法
func (p Phone) Start() {
fmt.Println("手机开始工作...")
}
func (p Phone) Stop() {
fmt.Println("手机停止工作...")
}
type Camera struct {
name string
}
func (c Camera) Start() {
fmt.Println("相机开始工作...")
}
func (c Camera) Stop() {
fmt.Println("相机停止工作...")
}
func main() {
//定义一个Usb接口数组,可以存放Phone和Canera的结构体变量
//这里就体现出多态数组
var usbArr [3]Usb
usbArr[0] = Phone{"小米"}
usbArr[1] = Phone{"vivo"}
usbArr[2] = Camera{"诺基亚"}
fmt.Println(usbArr)
test := Phone{}
test.name = "小米"
fmt.Println(test.name)
test.Start()
test.Stop()
test1 := Camera{}
test1.name = "索尼相机"
fmt.Println(test1.name)
test1.Start()
test1.Stop()
}
执行结果如下图所示: