【愚公系列】2022年08月 Go教学课程 030-对象继承
2023-06-13 09:12:58 时间
文章目录
一、对象继承
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)
}
相关文章
- Go 去找个对象吧
- 「Go工具箱」go语言csrf库的使用方式和实现原理
- 一文读懂Go Http Server原理
- 「Go工具箱」将文件大小转换成Kb、Mb、Gb就用这个库:go-humanize
- Go中这么多创建error的方式,你真的了解它们各自的应用场景吗
- client-go实战之六:时隔两年,刷新版本继续实战
- Go语言实操笔记,从入职到最佳实践 | 极客时间
- go的数据类型-基本数据类型-布尔型
- go的数据类型-复合数据类型-struct(一)
- Go-标准库-bufio(二)
- Go-包管理-go clean
- GO语言圣经-并发获取多个URL详解编程语言
- 使用Go语言来操作Oracle数据库(go语言oracle)
- Go语言输出正弦函数(Sin)图像
- Go语言使用select切换协程
- Linux下安装Go环境指南(linux安装go环境)
- 深度丨详解 Amazon Go 三大核心技术
- 语言结合SQL Server,Go谱写新篇章(sqlserver的go)
- 部署Go语言快速连接Oracle实现轻松部署(go连接oracle简单)
- 语言Oracle中发挥神奇作用的Go语言(oracle中有go)
- Go语句让Oracle数据库管理更方便(oracle go语句)