go語言中,雖然沒有明確提出物件導向的概念,但是基於現有的語法設計,我們也可以寫出物件導向的程式碼。 go語言中的物件導向是藉助struct結構體實現的。 (建議學習:go#時)
Golang 定義為物件導向的兩個關鍵字。
與C 採用public/protected/private指示成員和方法的可見性不同,Golang採用大小寫標識可見性,即大寫字母開頭的成員/方法對外可見,小寫開頭的則屬於類別的私有成員,外部不可以直接存取。
此外,Golang與C 在類別類型的定義上還有一個重要區別,那就是Golang在struct內只需要聲明類別的成員變量,而不需要在類別定義體內聲明或定義所有的方法,方法定義都在struct之外完成。
Golang透過struct定義類別的屬性,透過在func定義時傳入類別物件的方式定義類別的方法,其中屬性和方法的公有/私有屬性是透過首字母的大小寫決定的。
type Student struct { name string age int major string }
Golang沒有完整實作繼承,而是透過組合的方式實作。組合類別(子類別)可以直接呼叫被組合類別(基底類別)的公有方法,存取基底類別的公有屬性,子類別也可以定義自己的屬性,以及實作自己特有的方法。
Golang的設計哲學之一就是簡潔,透過大小寫區分成員/方法的公有/私有屬性,透過組合的方式實現繼承,都是簡潔哲學的體現。
Golang的interface類型定義的也是一個抽象的基類,它是一組方法的集合,任何完整實作這些方法的類型都被稱為該介面的實現。由於抽象與多態是相輔相成的,或者說抽象的目的就是為了實現多態。
以上是golang 是物件導向的麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!