Go學習筆記-面向對象struct之繼承

前一篇說了基於structmethod實現,如今咱們來看下struct中的method繼承。segmentfault

//定義一個person類型  
type Person struct {  
   Name string  
  Age int  
  Sex string  
}  
//獲取person的年齡  
func (Person *Person)getAge() int {  
   return Person.Age  
}  
//獲取person的性別  
func (Person *Person)getSex() string {  
   return Person.Sex  
}  
//定義一個Worker類型  
type Worker struct {  
   Person  
  Job string  
  Age int  
}  
//獲取Worker的年齡  
func (Worker *Worker)getAge() int {  
   return Worker.Age  
}  
func main() {  
  Person := Person{"andy",9,"男"}  
  andy := Worker{Person,"搬磚工",3}  
  fmt.Printf("%s:%s,職業:%s,年齡:%d,工齡:%d\r\n",andy.Name,andy.Sex,andy.Job,andy.Person.getAge(),andy.getAge())  
  //andy:男,職業:搬磚工,年齡:9,工齡:3  
}

上面這個示例,咱們首先定義一個person類型。而後定義了一個worker類型,繼承了person。可是對於worker又但願有本身的age屬性,與getAge方法。那麼這個時候咱們能夠重寫person的屬性與方法。可是在使用的時候,若是咱們想要使用person中已經被worker重寫的方法或者屬性,咱們就須要指定到person,好比andy.Person.getAge()。這樣直接告訴程序,咱們須要取得person中的getAge方法。spa

期待一塊兒交流

image

相關文章
相關標籤/搜索