一.定义接口层
interface.go
package main
type Interface interface {
LogName()
LogAge()
}
var base Interface
func LogName() {
base.logName()
}
func LogAge() {
base.logAge()
}复制代码
接口定义了两个方法,并封装一下,可以提供给外部调用
二.父类层
person.go
package main
import "fmt"
type person struct {}
func (p *person)logName() {
fmt.Println("person name")
}
func (p *person)logAge() {
fmt.Println("person age")
}复制代码
实现了最基础的接口
三.子类
student.go
package main
import "fmt"
type student struct {
person
}
func init() {
stu := &student{}
base = stu
}
func (s *student)logName() {
fmt.Println("student name")
}复制代码
子类student继承了父类的所有方法,并且重写了logName方法.
将student实例赋予base接口实例上.
四.运行
main.go
package main
func main() {
LogAge()
LogName()
}复制代码
输出:
person age
student name