码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象编程三大特征3

时间:2019-08-26 23:19:09      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:struct   练习   直接   数据类型   上海   main   区分   ima   一个   

多重继承介绍:

结构体的匿名字段是基本数据类型,如何访问,下面代码输出什么?

技术图片


匿名字段练习:

type Monster struct {
  Name string
  Age int
}

type A struct {
  Monster
  int //匿名字段是基本数据类型
  n int
}

func main() {

  //演示一下匿名字段基本数据类型的使用
  var a A
  a.Name = "狐狸精"
  a.Age = 300
  a.int = 20
  a.n = 40
  fmt.Println("a=", a)
}

说明:

1)如果一个结构体有int 类型的匿名字段,就不能有第二个。

2)如果需要有多个int类型的字段,则必须给int字段指定名字。


多重继承说明:

如一个struct 嵌套了多个匿名结构体,那么该结构体可以直接访问嵌套的匿名结构体的字段和方法,从而实现了多重继承。

案例演示:

type Goods struct {
  Name string
  Price float64
}

type Brand struct {
  Name string
  Address string
}

type TV struct {
  Goods
  Brand
}

func main() {
  tv1 := TV {Goods{"电视机001", 5000},Brand{"海尔", "山东青岛"},}
  tv2 := TV {
    Goods{"电视机002", 5000.99},
    Brand{"西门子", "北京"},
  }
  tv3 := TV {
    Goods{
      Price : 4000,
      Name : "电视机003",
    },
    Brand{
      Name : "夏普",
      Address : "上海",
    },
  }
  fmt.Println(tv1)
  fmt.Println(tv2)
  fmt.Println(tv3)
}


多重继承细节说明:

1)如嵌入的匿名结构体有相同的字段名或者方法名,则在访问时,需要通过匿名结构体类型名来区分。

  tv1 := TV {Goods{"电视机001", 5000},Brand{"海尔", "山东青岛"},}
  fmt.Println(tv1.Goods.Name)
  fmt.Println(tv1.Price)

2)为了保证代码的简洁性,建议大家尽量不使用多重继承

面向对象编程三大特征3

标签:struct   练习   直接   数据类型   上海   main   区分   ima   一个   

原文地址:https://www.cnblogs.com/green-frog-2019/p/11415398.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!