golang物件導向總結

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
type $name struct{  property01 int  property02 int  }

Golang裡面的方法和介面都是基於這裡type *** struct建立的類型,這裡其實可以理解為:

class $name {  public int property01;  public int property02;  }

類型就是類。

所以我們說是類型的某個方法,類型實現了某個介面。


    類型是屬性的集合,介面是方法的集合   

函數的定義:func       $funcName ( ) ( ){}

方法的定義:func  ( )  $funcName ( ) ( ){}

Func (成員變數 類型) funname(局部變數 類型,局部變數 類型) (傳回值類型) {}

成員變數是通過type來定義的。

函數的參數列表是需要傳遞的局部變數。

golang的方法的類型簽名:1.指明要給哪個類型添加方法;2.指定調用此方法的變數的是實值型別還是指標類型,調用此方法的變數必須按照類型簽名這裡來決定是用實值型別還是指標類型,golang能自動轉換,但你必須確保這個變數能被正確轉換為相應的值或指標。例如,一個介面類型的變數就沒法被轉換為一個struct的指標。


繼承:

當一個類型B的某個欄位(匿名欄位)的類型是另一個類型 A的時候,那麼類型 A所擁有的全部欄位都被隱式地引入了當前定義的這個類型B。這樣就實現了繼承。B類型的變數就可以調用A的所有屬性和方法。也就是說A繼承了B。

定義繼承時,子類中一般都含有一個類型是父類的匿名欄位。匿名欄位就是用來實現繼承的。

package mainimport ("fmt")type Animal struct {Name stringAge  int}func (ani *Animal) GetAge() int {return ani.Age}type Dog struct {Animal //Animal匿名欄位}func main() {dog := Dog{Animal{"dog", 10}}fmt.Println(dog.Age)fmt.Println(dog.GetAge())}

方法的重寫

如果一個類型B實現了作為其屬性的類型A中的方法。那麼這個類型B的值調用方法的時候調用的是自己類型B的方法,而不是屬性類型A的方法。
代碼如下:

package mainimport ("fmt")type Animal struct {Name stringAge  int}func (ani *Animal) GetAge() int {return ani.Age}type Dog struct {Animal //Animal匿名欄位}func (ani Dog) GetAge() int {return ani.Age + 1}func main() {dog := Dog{Animal{"dog", 10}}fmt.Println(dog.Age)fmt.Println(dog.GetAge())}

介面

1 介面

1)定義介面類型
定義介面,介面中可以有未實現的方法。

type Animal interface {GetAge() int}

1)實現介面類型
如果某個類型實現了介面的所有方法。則這個類型實現了這個介面。

type Animal interface {GetAge() int}type Dog struct {Name stringAge  int}


//實現GetAge()方法則實現了Animal介面 

func (ani Dog) GetAge() int {return ani.Age}



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.