咔咔博客之继承性
- 继承的意义在于低成本地扩展和改造原有代码
- 首先,子类一行代码即可拥有父类的全部成员(属性和方法)
- 继承的目的,在于扩展和改造父类
- 扩展,是指子类发展出自己独有的新属性和新方法,以适应自身需求
- 改造,是指子类覆写和覆盖父类成员(属性和方法),以适应自身需求
代码地址
https://github.com/fangkang7/goLearn
案例
首先我们需要定义父级的结构体和方法
知识点
在学到这一步貌似go的继承比PHP的要简单的多
go的继承只需要把父级的结构体名直接放到里边就行
继承后可以访问父级的属性和方法、也可以访问自己的专有属性、同时还拥有重写父级方法
代码
所有案例都配备有代码,直接扔进去就可以执行
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() }