• 76_Go基础_1_43 方法继承


     1 package main
     2 
     3 import "fmt"
     4 
     5 // 1.定义一个"父类"
     6 type Person struct {
     7     name string
     8     age  int
     9 }
    10 
    11 // 2.定义一个"子类"
    12 type Student struct {
    13     Person // 结构体嵌套,模拟继承性
    14     school string
    15 }
    16 
    17 // 3.方法
    18 func (p Person) eat() {
    19     fmt.Println("父类的方法,吃窝窝头。。")
    20 }
    21 
    22 func (s Student) study() {
    23     fmt.Println("子类新增的方法,学生学习啦。。。")
    24 }
    25 
    26 // func (s Student) eat() {
    27 //     fmt.Println("子类重写的方法:吃炸鸡喝啤酒。。")
    28 // }
    29 
    30 func main() {
    31     /*
    32         OOP中的继承性:
    33             如果两个类(class)存在继承关系,其中一个是子类,另一个作为父类,那么:
    34 
    35             1.子类可以直接访问父类的属性和方法
    36             2.子类可以新增自己的属性和方法
    37             3.子类可以重写父类的方法(orverride,就是将父类已有的方法,重新实现)
    38 
    39 
    40         Go语言的结构体嵌套:
    41             1.模拟继承性:is - a
    42                 type A struct{
    43                     field
    44                 }
    45                 type B struct{
    46                     A //匿名字段
    47                 }
    48 
    49             2.模拟聚合关系:has - a
    50                 type C struct{
    51                     field
    52                 }
    53                 type D struct{
    54                     c C //聚合关系
    55                 }
    56 
    57     */
    58 
    59     // 1.创建Person类型
    60     p1 := Person{name: "王二狗", age: 30}
    61     fmt.Println(p1.name, p1.age) // 父类对象,访问父类的字段属性
    62     p1.eat()                     // 父类对象,访问父类的方法
    63 
    64     // 2.创建Student类型
    65     s1 := Student{Person{"Ruby", 18}, "千锋教育"}
    66     fmt.Println(s1.name)   // s1.Person.name
    67     fmt.Println(s1.age)    // 子类对象,可以直接访问父类的字段,(其实就是提升字段)
    68     fmt.Println(s1.school) // 子类对象,访问自己新增的字段属性
    69 
    70     s1.study()      // 子类新增的方法,学生学习啦。。。
    71     s1.eat()        // 子类重写的方法:吃炸鸡喝啤酒。。
    72     s1.Person.eat() // 父类的方法,吃窝窝头。。  依然可以访问父类的方法
    73 }
  • 相关阅读:
    第二章 1.绘制文本
    在Windows Mobile 5中使用DirectShow控制摄像头转
    写会议纪要也是需要水平滴
    注重实效的程序员(The Pragmatic Programmer)[转载]
    项目经理面试指南(上)[转载]
    上海西门子培训序
    周末桂林游
    我们应该如何面试程序员/技术人员?
    Erlang Code Auto Reloader
    新车落地几种常见的配件加装建议
  • 原文地址:https://www.cnblogs.com/luwei0915/p/15630288.html
Copyright © 2020-2023  润新知