当前位置:网站首页>【愚公系列】2022年08月 Go教学课程 030-对象继承
【愚公系列】2022年08月 Go教学课程 030-对象继承
2022-08-06 06:29:00 【愚公搬代码】
一、对象继承
1.对象继承的概念
继承是面向对象软件技术当中的一个概念,与多态、封装共为面向对象的三个基本特征。继承可以使得子类具有父类的属性和方法或者重新定义、追加属性和方法等。
但在go语言中并没继承的概念,只能通过组合来实现继承。组合就是通过对现有对象的拼装从而获得实现更为复杂的行为的方法。
- 继承:一个struct嵌套了另外一个匿名的struct从而实现了继承。
- 组合:一个struct嵌套了宁外一个struct的实例实现了组合。
type Animal struct {
}
//继承
type Cat struct {
//匿名
*Animail
}
//组合
type Dog struct {
animal Animal
}
2.对象继承的案例
2.1 普通类型
package main
import "fmt"
type Student struct {
Person // 匿名字段,只有类型,没有成员的名字
score float64
}
type Teacher struct {
Person
salary float64
}
type Person struct {
id int
name string
age int
}
func main() {
//var stu Student=Student{Person{100,"愚公",31},90}
// 部分初始化
// var stu Student=Student{score:100}
var stu Student = Student{
Person: Person{
id: 100}}
fmt.Println(stu)
//fmt.Println(stu1)
}

2.2 对象继承指针类型
package main
import "fmt"
type Student struct {
*Person // 匿名字段
score float64
}
type Person struct {
id int
name string
age int
}
func main() {
var stu Student = Student{
&Person{
101, "愚公", 18}, 90}
fmt.Println(stu.name)
}
3.对象继承成员值的修改
package main
import "fmt"
type Student struct {
Person
score float64
}
type Person struct {
id int
name string
age int
}
func main() {
var stu Student = Student{
Person{
101, "愚公1号", 18}, 90}
var stu1 Student = Student{
Person{
102, "愚公2号", 18}, 80}
stu.score = 100
fmt.Println("愚公一号考试成绩:", stu.score)
fmt.Println(stu1.score)
fmt.Println(stu1.Person.id)
fmt.Println(stu1.id)
}

4.对象的多重继承
package main
import "fmt"
type Student struct {
Person
score float64
}
type Person struct {
Object
name string
age int
}
type Object struct {
id int
}
func main() {
var stu Student
stu.age = 18
fmt.Println(stu.Person.age)
stu.id = 101
fmt.Println(stu.Person.Object.id)
}

边栏推荐
猜你喜欢
随机推荐
DescrTab2包,输出SCI级别的描述统计表
C语言指针(大白话+图文聊指针)
WinForm(三)揭开可视化控件的面纱
猴子都能上手的PUN扩展(房间密码,房间列表,RTC)
翻译俄语的软件
MySql version number view command
finalfit包可视化模型结果
【 】 calculating trajectory error
Excel import exception Cannot get a STRING value from a NUMERIC cell resolved
"The use of lambda expressions"
推荐系统-排序层-2018:ESMM【多任务学习模型】【多任务学习(multi-task learning,简写MTL)】【阿里】
js计算文本宽度
知识图谱介绍
Unity NavMesh基础自动寻路
[Monte Carlo Simulation] 1
Five methods of traversing the List collection
产品经理专业知识50篇(三)-如何寻找用户增长的根本动因
我理解的游戏数据模型
2022年五面蚂蚁、三面拼多多、字节跳动最终拿offer入职拼多多,看完你也可以了
用tidyverse包做探索性数据分析,常用函数总结









