go語言學習筆記八 繼承

繼承基本使用

package main

import "fmt"

type StudentBase struct {
	Name  string
	Age   int
	Score float64
}

func (p *StudentBase) ShowInfo() {
	fmt.Printf("1.StudentBase Name:%v Age:%v Score:%v\n", p.Name, p.Age, p.Score)
}

type Student struct {
	StudentBase  // 繼承StudentBase的屬性和方法
	Hobby string
}

type Student2 struct {
	Student StudentBase  // 嵌套一個結構體並且命名 稱爲組合
	Hobby string
}


func main() {
	s := &Student{}
	// 可以簡寫爲s.Name = "小張"
	// 查找順序 現在Student中查找,沒有屬性再查找StudentBase,如果還沒有會報錯
	s.StudentBase.Name = "小張"
	s.StudentBase.Age = 10
	s.StudentBase.Score = 99.5
	s.Hobby = "打籃球"
	// 可以簡寫爲 s.ShowInfo()
	s.StudentBase.ShowInfo()
	fmt.Printf("2.Student獨有的字段Hobby:%v\n", s.Hobby)

	s2 := &Student2{}
	// 組合方式不能簡寫爲s2.Name
	s2.Student.Name = "小明"
	fmt.Printf("3.s2.Student.Name:%v\n", s2.Student.Name)
}

輸出

1.StudentBase Name:小張 Age:10 Score:99.5
2.Student獨有的字段Hobby:打籃球
3.s2.Student.Name:小明

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