go 多态
GO 多态概念:
1、定义一个接口,用于接收实例化对象, 此接口中设计好需要的方法(类 - 函数),可以有多个。
2、任何实现了这个接口的类型,都可以赋值给这个接口,从而实现多态。
3、多个类之间不需要有继承关系。
4、如果interface 接口中定义了多个接口(方法), 那么实际的类必须全部实现这些接口(方法)函数,才能赋值给接口
package main
import (
"fmt"
)
// 对外interface接口, 其中实现了结构体(类)的方法
type IAttach interface {
// 结构体对象绑定的方法
CallName()
}
// 定义结构体(类)
type LowObject struct {
name string
level int
}
type HeightObject struct {
name string
level int
}
// 为结构体(LowObject)绑定(类)方法 CallName
func (call *LowObject) CallName() {
fmt.Printf("name: %v, level: %v\n", call.name, call.level)
}
func (o *HeightObject) CallName() {
fmt.Printf("name: %v, level: %v\n", o.name, o.level)
}
// 多态引用
func Exe(a IAttach){
a.CallName()
}
func main() {
// 定义一个用来接收 实例化对象的 接口, 此接口必须实现了结构体绑定的方法
var p_1 IAttach
// 实例化
lowLevel := LowObject{
name: "哈哈",
level: 1,
}
heightObject := HeightObject{
name: "嘿嘿",
level: 10,
}
// 接口引用
lowLevel.CallName()
p_1 = &lowLevel
p_1.CallName()
heightObject.CallName()
p_1 = &heightObject
p_1.CallName()
// 多态
Exe(&lowLevel)
Exe(&heightObject)
}

浙公网安备 33010602011771号