咔咔博客之繼承性
- 繼承的意義在於低成本地擴展和改造原有代碼
- 首先,子類一行代碼便可擁有父類的所有成員(屬性和方法)
- 繼承的目的,在於擴展和改造父類
- 擴展,是指子類發展出本身獨有的新屬性和新方法,以適應自身需求
- 改造,是指子類覆寫和覆蓋父類成員(屬性和方法),以適應自身需求
代碼地址
https://github.com/fangkang7/goLearngit
案例
首先咱們須要定義父級的結構體和方法
而後在寫孩子的結構體和方法
從而就會有三種形式
github
知識點
在學到這一步貌似go的繼承比PHP的要簡單的多微信
go的繼承只須要把父級的結構體名直接放到裏邊就行spa
繼承後能夠訪問父級的屬性和方法、也能夠訪問本身的專有屬性、同時還擁有重寫父級方法code
代碼
全部案例都配備有代碼,直接扔進去就能夠執行blog
package main import "fmt" // 父級結構體 type parent struct { name string age int like []string } // 父級方法 func (p *parent) parentName() { fmt.Printf("我是父親的名字%s\n", p.name) } // 孩子結構體 type child struct { // 繼承父級 parent // 孩子的專有屬性 play []string } // 孩子的方法 func (child *child) eat() { fmt.Println("咔咔喜歡吃右") } // 覆寫父級的方法 func (child *child) parentName() { fmt.Println("我是覆蓋父級的方法") } func main() { parent := new(parent) parent.name = "咔咔手賺網:fangkang.top" // 我是父親的名字咔咔手賺網:fangkang.top parent.parentName() // 訪問父類的屬性和方法 child := new(child) child.name = "咔咔博客地址:blog.fangkang.top" // 我是父親的名字咔咔博客地址:blog.fangkang.top child.parentName() // 咔咔博客地址:blog.fangkang.top fmt.Println(child.name) // 訪問特有的屬性和方法 // 咔咔喜歡吃右 child.eat() strings := []string{ "咔咔博客", "咔咔手賺網"} child.play = strings // [咔咔博客 咔咔手賺網] fmt.Println(child.play) // 訪問覆蓋父級的方法 // 我是覆蓋父級的方法 child.parentName() }