,12Go面向对象

尽管Go中没有封装、继承、多态这些概念,但可以通过别的方式实现这个特性:

*封装:通过方法实现

*继承:通过匿名字段实现

*多态:通过接口实现

package main

import "fmt"

type person struct {
        age  int
        name string
}

// 方法
func (p *person) display() {
        fmt.Println("person:", p.age, p.name)
}

type stduent struct {
        person    //嵌套person
        id int
}

// 在stduent中重写person的display()方法,进行覆盖person:display()
func (s *stduent) display() {
        fmt.Println("stduent:", s.age, s.name, s.id)
}

func main() {
        s := stduent{person{12, "jadeshu"}, 0001}
        // 调用基类函数  ---跟其他语言比较的说法
        s.person.display()
        // 调用子类函数  ---跟其他语言比较的说法
        s.display()
}