Go语言中没有类,我们可以使用结构体作为对象,来绑定对应的方法。而接口是功能的抽象,是方法的集合。
我们来实现这样一个例子:
- 实现猫和狗两个对象,并且他们都有动作:叫,但叫声不同。再实现一个对象鸟,他除了叫,还会飞。
下面是基于Go语言,实现题目要求的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| package main
import "fmt"
type Animal interface { Cry() }
type Cat struct{}
func (c Cat) Cry() { fmt.Println("喵喵喵") }
type Dog struct{}
func (d Dog) Cry() { fmt.Println("汪汪汪") }
type Bird struct{}
func (b Bird) Cry() { fmt.Println("叽叽喳喳") }
func (b Bird) Fly() { fmt.Println("我会飞") }
func main() { var animal Animal
animal = Cat{} animal.Cry()
animal = Dog{} animal.Cry()
bird := Bird{} animal = bird animal.Cry() bird.Fly() }
|
在上述代码中,定义了一个Animal接口和三个结构体Cat、Dog、Bird分别实现了这个接口。其中,Cat和Dog只能叫,而Bird除了叫外还可以飞行。在main函数中创建相应的对象并调用相应的方法。
运行上述代码,输出如下:
在这段代码中,我们使用了接口的多态特性,通过定义Animal接口,实现了不同类型的对象之间的通用性,并且在Bird中新增了Fly() 方法,符合面向对象的开放封闭原则。