zoukankan      html  css  js  c++  java
  • 面向对象编程三大特征3

    多重继承介绍:

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


    匿名字段练习:

    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)为了保证代码的简洁性,建议大家尽量不使用多重继承

  • 相关阅读:
    jquery使用--常见前端效果实现
    Quartz —— Spring 环境下的使用
    java设计模式--外观模式(Facade)
    java设计模式--装饰模式(Decorator)
    Java开发中的23种设计模式详解(转)
    java设计模式--工厂模式
    选择排序
    序列化
    解析器
    版本控制
  • 原文地址:https://www.cnblogs.com/green-frog-2019/p/11415398.html
Copyright © 2011-2022 走看看