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{"二師兄"})
}

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