GO学习笔记——封装、继承、多态
在Go语言中,并没有像其他面向对象语言那样的class和继承的概念,但是Go提供了结构体和接口,可以实现类似的功能。
- 封装
Go语言中通过结构体来实现封装,将对象的状态(字段)和行为(方法)捆绑在一起。
type Student struct {
name string
age int
}
func (s Student) SayHello() {
fmt.Printf("Hello, my name is %s, I am %d years old\n", s.name, s.age)
}
- 继承
Go语言中并不支持类似其他语言中的类继承,但是可以通过匿名字段的方式实现类似效果。
type Person struct {
name string
age int
}
type Student struct {
Person // 匿名字段
school string
}
func (s Student) SayHello() {
fmt.Printf("Hello, my name is %s, I am %d years old, I am studying in %s\n", s.name, s.age, s.school)
}
- 多态
Go语言中通过接口来实现多态。
type Speaker interface {
Speak() string
}
type Chinese struct {}
func (c Chinese) Speak() string {
return "Zhongguo Le"
}
type English struct {}
func (e English) Speak() string {
return "Hello World"
}
func main() {
var s Speaker
s = Chinese{}
fmt.Println(s.Speak())
s = English{}
fmt.Println(s.Speak())
}
以上代码中,Chinese和English分别实现了Speaker接口的Speak方法,根据实例化的类型不同,调用同样的方法可以产生不同的行为,这就是多态。
评论已关闭