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

相关文章
相关标签/搜索