go语言基础 多态

多态:

定义一个接口类型,但是可以创建任意的实现类的对象。

直接上代码举例说明

package main

import "fmt"

type Run interface {
   run()
}

type Runner struct {
   name string
}

func (r Runner) run()  {
   fmt.Println(r.name,",开始跑步。。。慢跑")
}

type Pig struct {
   name string
}

func (p Pig) run()  {
   fmt.Println(p.name,",撅着屁股跑。。。")
}



// 定义一个函数:
func testRun(r Run)  { // 将接口作为参数,可以传入的任意是实现类的对象。
   r.run()
}
func main()  {
   /*
   多态:事物的多种形态
      靠接口实现:定义接口类型,创建任意的实现类对象。

      定义接口类型的对象,但是实际上可以创建该接口的任意实现那类的对象。
      接口类型的对象,不能访问实现类中的字段的。
    */
    var r1 Run // 对象的声明
    r1 = Runner{"跑步者"}
    r1.run()

    r1 = Pig{"佩奇"}
    r1.run()

    //r1.name //语法错误,接口类型对象,不能访问实现类的字段

   testRun(Pig{"二师兄"})
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章