//超集可以使用子集里面的方法,而子集不能调用超集里面的方法
//超集接口变量可以转换为子集接口类型,但是子集接口类型不可以转换为超集接口类型
代码如下:
package main
import "fmt"
type Hummaner interface {
sing() //声明一个方法,并没有实现
}
type Studenter interface {
Hummaner //匿名字段,嵌入字段
play() //声明一个方法,并没有实现
}
type Student struct {
id int
name string
}
//type Techer struct {
// id int
// name string
//}
func (s *Student) sing() {
fmt.Println("学生在唱歌!!!")
}
func (t *Student) play() {
fmt.Println("老师在玩耍!!!")
}
func main() {
//studenter是超集,hummer是子集
var s Studenter = &Student{1, "steven"} //指针接收
var h Hummaner = s //超集可以转子集
h.sing()
var h1 Hummaner = &Student{1, "steven"}
//var s1 Studenter = h1// cannot use h1 (type Hummaner) as type Studenter in assignment
//s1.sing()
}