Go语言 类继承

 本篇文章主要内容为Go语言类继承介绍及类继承示例。

目录

继承

定义父类

类嵌套

定义学生类

赋值及调用

继承

定义老师类

赋值及调用

同名字段

访问权限

总结


继承

Go 语言中没有继承的概念,所以结构、接口之间也没有父子关系。

Go 语言提倡的是组合利用组合达到代码复用的目的。

定义父类

首先定义一个人类,并设定名称、年龄、性别三个属性,绑定一个吃东西的类方法。

示例如下:

package main

import "fmt"

type Human struct {
   // 成员属性
   name   string
   age    int
   gender string
}

// 在类外绑定方法
func (this *Human) Eat() {
   fmt.Println("this is :", this.name, " eating")
}

 

类嵌套

类的嵌套而非类的继承。

定义学生类

定义一个学生类,包含Human类型的变量,此时是类的嵌套。

示例如下:

type Student1 struct {
   hum    Human // 包含Human类型的变量,此时是类的嵌套
   score  float64
   school string
}

 

赋值及调用

对学生类赋值及打印学生类的属性。

示例如下:

func main() {
   s1 := Student1{
      hum: Human{
         name:   "hong",
         age:    12,
         gender: "女生",
      },
      school: "清华附小",
   }

   fmt.Println("s1.name:", s1.hum.name)
   fmt.Println("s1.school:", s1.school)
}

运行结果:

s1.name: hong
s1.school: 清华附小

 

继承

定义老师类

定义一个老师,去继承Human类。

示例如下:

type Teacher struct {
   Human // 直接写human类型,没有字段名字
   subject string //学科
}

 

赋值及调用

定义一个老师,并赋值老师的属性。

示例如下:

func main() {
   t1 := Teacher{}
   t1.subject = "英语"
   // 下面的这些字段都是继承自Human
   t1.name = "朱老师"
   t1.age = 40
   t1.gender = "女"

   fmt.Println("t1:", t1)
   // 调用继承的方法
   t1.Eat()
}

 

同名字段

继承的时候,虽然我们没有定义字段名字,但是自动会创建一个默认同名字段

这是为了在子类中依然可以操作父类,因为:子类父类可能出现同名字段。

示例如下:

fmt.Println("t1.Human.name:", t1.Human.name)

 

访问权限

在go语言中,权限都是通过首字母大小写来控制

1.import --> 如果包名不同,那么只有大写字母开头的才是public的

2.对于类里面的成员、方法 --> 只有大写开头的才能在其他包中使用

总结

本篇文章主要内容为Go语言类继承介绍及类继承示例。

你可能感兴趣的:(GO,golang,开发语言,后端)