Go、Java、C++语言实现多态的方式各有特色,但都遵循面向对象编程的基本原则。以下是各自实现多态的主要手段:
Go语言:
虽然Go语言本身并不直接支持类和传统的面向对象继承,但它通过接口(Interface)实现了多态。Go的接口类型定义了一组方法签名,任何实现了这些方法的类型都自动实现了该接口,从而实现了“鸭子类型”的多态。
实现方式:
- 接口定义: 定义一个接口,列出需要实现的方法签名。
- 类型实现: 不需要显式声明类型实现了某个接口,只要类型提供了接口所需的所有方法,就视为隐式实现了该接口。
- 接口赋值与方法调用: 可以将实现了接口的任意类型值赋给接口变量,通过接口变量调用方法时,实际执行的是该值对应类型的方法实现,这就是多态行为。
示例:
type Animal interface {
Speak() string
Move()
}
type Dog struct{
}
type Cat struct{
}
func (d Dog) Speak() string {
return "Woof!"
}
func (d Dog) Move() {
fmt.Println("Dog is running.")
}
func (c Cat) Speak() string {
return "Meow!"
}
func (c Cat) Move() {
fmt.Println("Cat is walking.")
}
func main() {
var animal Animal
animal = Dog{
}
animal