标题面向对象编程三大特性
- 封装
把抽象的字段和对字段的操作抽象在一起。
- 继承
1.go中,如果struct中嵌套了另一个匿名结构体,那么这个结构体可以直接访问匿名结构体的字段和方法,从而实现了继承性。
3.结构体可以使用嵌套匿名结构体的所有字段和方法,即首字母大写或小写的字段、方法都可以使用。
4.匿名结构体字段访问可以简化。
(1)执行流程:执行b.Name,先看b对应的类型有没有Name,如果有,则直接调用b对应的Name,否则调用嵌套结构体A的Name,如果A也没有则报错。
(2)结构体嵌入两个或多个匿名结构体,如果两个匿名结构体有相同的方法和字段(同时结构体本身没有同名的字段和方法),在访问时,必须指定匿名结构体名字,否则编译报错。
5.
6.多重继承:一个struct嵌套了多个匿名结构体
- 接口
interface类型可以定义一组方法,但是这些不需要实现,并且interface不能包含任何变量。
1.接口本身不能创建实例,但可以指向一个实现了该接口的自定义类型的变量。
2.一个自定义类型需要把接口中的所有方法都实现,才实现了该接口。
4.一个接口(A)可以继承多个别的接口(B,C),如果要实现A接口,也必须将B,C接口的方法全部实现。
5.interface默认是引用类型,如果没有对interface初始化就使用,就会输出nil。
6.空接口
type T interface{}
没有任何方法,所有类型都实现了空接口,即我们可以把任意变量都赋给空接口。