Go之物件導向程式設計之繼承

2022-09-14 02:09:12 字數 1803 閱讀 1984

golang的繼承與j**a和php不太一樣,如php繼承需要用到extends關鍵字,而golang使用的是匿名繼承或有名繼承。

二:簡單舉例

package main

import (

"fmt"

)type brand struct

type goods struct

func main()

結果[ `go run extends.go` | done ]

純牛奶}

繼承的好處有,提高**的復用性,程式的擴充套件和維護更加簡單

三:繼承的使用細節

①:結構體可以使用繼承結構體的所有字段,無論首字母大寫還是小寫。

package main

import (

"fmt"

)type person struct

func (p person) say()

type anna struct

func main()

結果[ `go run extends.go` | done ]

我的名字叫anna,今年18歲

②:匿名繼承方法訪問方式可以簡化

修改①中的例子,將訪問方式簡化

func main()

③:當結構體和匿名結構體有相同欄位時,結構體變數採用就近原則來方法字段,如果希望採用匿名的字段,使用詳細訪問方式即可

package main

import (

"fmt"

)type person struct

func (p person) say()

type anna struct

func (a anna) annasay()

func main()

結果[ `go run extends.go` | done ]

我的名字叫anna,今年0歲

我今年18歲

備註:anna訪問的流程如下 先查詢anna結構體是否有需要的字段,有就是要anna結構體,否則往anna的匿名結構體person上查詢,找到就使用該結構體的字段,否則繼續往person的匿名結構體查詢,直到按照就近原則找到為止,沒找到就報錯。

④:當有兩個匿名結構體,且兩個匿名結構體有相同的欄位名稱而結構體如anna沒有該形同欄位時,必須指定匿名結構體名稱,否則報錯。

package main

import (

// "fmt"

)type person struct

type animal struct

type anna struct

func main()

⑤:結構體繼承有名結構體時,這種方式就是組合,訪問組合的字段時,必須帶上結構體名稱

type anna struct

func main()

在第④基礎上修改。

⑥:在建立結構體變數時可以同時指定匿名結構體的字段值

package main

import (

"fmt"

)type person struct

type anna struct

func main() }

fmt.println(anna)

var louis anna = anna,}

fmt.println(louis)}結果

[ `go run extends.go` | done ]

} }

⑦:多重繼承,在第④中有舉例,略。

Go 物件導向程式設計之繼承

package main import fmt 編寫乙個學生考試系統 小學生 type pupil struct 顯示他的成績 func p pupil showinfo func p pupil setscore score int func p pupil testing 大學生,研究生。大學生...

Python 之物件導向 繼承

目標 單繼承多繼承 物件導向三大特性 封裝 根據 職責 將 屬性 和 方法 封裝 到乙個抽象的 類 中 繼承 實現 的重用,相同的 不需要重複的編寫 多型 不同的物件呼叫相同的方法,產生不同的執行結果,增加 的靈活度 單繼承1.1 繼承的概念 語法和特點 繼承的概念 子類 擁有 父類 的所有 方法 ...

開腦洞學程式設計之物件導向

本專欄序章與目錄 物件導向的程式設計是軟體工程中乙個非常重要的組成部分,其三大特性 繼承 封裝 多型對初學者來說可能有一些難以理解。這裡舉乙個比較簡單的現實生活中的例子 學習 來進行說明。這裡提到的學習是乙個抽象的概念,不管是學習某一門課程,還是學習做飯,還是學習把妹,具體細節可能不同,但巨集觀上的...