扩展
上一篇讲了实现一个接口里的全部方法。
如果实现多个接口,也是很简单的,同理把他的方法实现了就行。
背景:
有一个动物的接口,他有吃和跑的动作,突然来一只鸟的动物,呀,它还会飞。
如果我们修改接口动物加上飞的动作,这样会让狗也要飞了。所以,我们把接口的方法都单独另出来。
package main
import (
"fmt"
)
//飞的接口
type IFly interface {
Fly()
}
//吃的接口
type IEat interface {
Eat()
}
//跑的接口
type IRun interface {
Run()
}
//狗的实现类
type Dog struct {
name string
}
func (dog *Dog) Eat() {
fmt.Println(dog.name + " eat")
}
func (dog *Dog) Run() {
fmt.Println(dog.name + " run")
}
//鸟的实现类
type Bird struct {
name string
}
func (bird *Bird) Fly() {
fmt.Println(bird.name + " fly")
}
func (bird *Bird) Eat() {
fmt.Println(bird.name + " eat")
}
func main() {
var eat IEat = &Dog{"Dog"}
eat.Eat()
eat = &Bird{"Bird"}
eat.Eat()
var run IRun = &Dog{"Dog"}
run.Run()