Go中的OOP

OOP

  1. Go不是纯面向对象的语言

  2. Go没有面向对象的三大特征(封装,继承,多态)

  3. Go通过结构体嵌套模拟继承

    1. 模拟继承性:is-a

      type A struct{
          field
      }
      type B struct{
          A //匿名字段 提升字段
      }
      
    2. 模拟聚合关系:has-a

      type C struct{
          field
      }
      type D struct{
          c C//聚合关系
      }
      

提升字段

在结构体中属于匿名结构体的字段称为提升字段,因为他们可以被访问,就好像它们属于拥有匿名结构字段的结构体一样。

type Book struct {
	bookName string
	price float64
}

type Worker struct {
	name string
	age int
	Book
}

worker := Worker{
    name:"kaka",
    age:20,
    Book:Book{"工作手册",20.2},
}
fmt.Println(worker.bookName) //不同通过Book对象,就可以直接访问到Book属性
posted @ 2020-05-05 21:06  henryno12  阅读(218)  评论(0编辑  收藏  举报