目录
- 概述
- 实践
- 多态实现
- 代码
- 结果
- 基本要素
- 结束
概述
Golang中类的表示与封装继承 用这种方式并不能实现多态
需要结合 interface
来实现。
实践
多态实现
代码
package main
import "fmt"
type AnimalIF interface {
// 这两个方法,实现类,必需要实现
Sleep()
GetColor()
}
type Cat struct {
color string
}
func (this *Cat) GetColor() {
fmt.Println(this.color)
}
func (this *Cat) Sleep() {
fmt.Println("cat sleep...")
}
type Dog struct {
color string
}
func (this *Dog) GetColor() {
fmt.Println(this.color)
}
func (this *Dog) Sleep() {
fmt.Println("dog sleep...")
}
func sleep(animal AnimalIF) {
animal.Sleep()
}
func main() {
// 接口的数据类型 ,父类指针
var animal AnimalIF
animal = &Cat{"yellow"}
animal.GetColor()
sleep(animal)
animal = &Dog{"red"}
animal.GetColor()
sleep(animal)
}
结果
执行结果如下:
基本要素
go 语言中要完成多态,需要两个基本要素
- 接口中有的方法,实现类中必须要实现
- 接口定义变量,传实现类指针
结束
Golang中面向对象的多态及基本要素 至此结束,如有疑问,欢迎评论区留言。