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

2021-10-07 18:15:05 字數 2321 閱讀 3932

package main

import ( "fmt"

)//編寫乙個學生考試系統

//小學生

type pupil struct

//顯示他的成績

func (p *pupil) showinfo()

func (p *pupil) setscore(score int)

func (p *pupil) testing()

//大學生, 研究生。。

//大學生

type graduate struct

//顯示他的成績

func (p *graduate) showinfo()

func (p *graduate) setscore(score int)

func (p *graduate) testing()

//**冗餘.. 高中生....

func main()

pupil.testing()

pupil.setscore(90)

pupil.showinfo()

//測試

var graduate = &graduate

graduate.testing()

graduate.setscore(90)

graduate.showinfo()

}

其它的結構體不需要重新定義這些屬性(字段)和方法,只需巢狀乙個 student 匿名結構體即可。示意圖如下:

)//編寫乙個學生考試系統

type student struct

//將pupil 和 graduate 共有的方法也繫結到 *student

func (stu *student) showinfo()

func (stu *student) setscore(score int)

//給 *student 增加乙個方法,那麼 pupil 和 graduate都可以使用該方法

func (stu *student) getsum(n1 int, n2 int) int

//小學生

type pupil struct

//顯示他的成績

//這時pupil結構體特有的方法,保留

func (p *pupil) testing()

//大學生, 研究生。。

//大學生

type graduate struct

//顯示他的成績

//這時graduate結構體特有的方法,保留

func (p *graduate) testing()

//**冗餘.. 高中生....

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

golang的繼承與j a和php不太一樣,如php繼承需要用到extends關鍵字,而golang使用的是匿名繼承或有名繼承。二 簡單舉例 package main import fmt type brand struct type goods struct func main 結果 go run...

物件導向程式設計之封裝 繼承和重寫

封裝的含義 對屬性進行操作 將資料 屬性 和行為 方法 包裝到類物件中。在方法內部對屬性進行操作,早類物件的外部呼叫方法。這樣,無須關心方法內部的具體實現細節,從而隔壁了複雜度。在類物件的內部通過訪問控制把某些屬性和方法隱藏起來,不允許在類物件的外部直接訪問,而是在類物件的內部對外提供公開的介面方法...

PHP 物件導向程式設計之繼承性

可以有多層繼承,即乙個類可以繼承某乙個類的子類,如類 b 繼承了類 a,類c 又繼承了類 b,那麼類 c 也間接繼承了類 a。class a class b extends a php是單繼承,乙個類只能有乙個父類 乙個類可以有多個子類 支援多層繼承 classa class bextends ac...