继承基本语法|学习笔记

简介: 快速学习继承基本语法

开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程:继承基本语法】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/626/detail/9692


继承基本语法

 

内容简介:

一、继承基本介绍和示意图

二、嵌套匿名结构体的基本语法

 

一、 继承基本介绍和示意图

1. 继承基本介绍

(1)继承可以解决代码复用,让编程更加靠近人类思维。在现实生活中也有继承的概念,比如儿子会继承父亲的财或产一些特性或一些基因等等。

(2)当多个结构体存在相同的属性(字段)和方法时,可以从这些结构体中抽象出结构体(比如刚才的 Student ),在该结构中定义这些相同的属性和方法。

(3)其他的结构体不需要重新定义这些属性和方法,只需嵌套一个Student 匿名结构体即可。

(4)也就是说:在 Golang 中,如果一个 struct 嵌套了另一个匿名结构体,那么这个结构体可以直接访问匿名结构体的字段和方法,从而实现了继承特性。可以发现 Golang 里学的面向对象编程比 Java 简单许多。

2. 示意图

打开 Excel 文件,在上一节中写了 Pupil 和 Graduate 两个结构体,它们各自有它的一些字段和绑定方法,同时在写 Graduate 时可以发现它里面的很多字段和方法与 Pupil 里的字段和方法是相同的。继承首先会将 Pupil 和 Graduate 里面共有的字段和方法提取出来,且保留 Pupil 和 Graduate 它们独特的属性和其特有的方法,然后再想一个办法使它们形成继承关系,注意继承的概念和很多编程语言是靠一个关键词完成的,并不是靠 Graduate ,它为了体现继承效果用了匿名结构体,也就是把共有的 student 的名字嵌入 Pupil 和Graduate 里,这样就无需再重写 student 里面共有的字段和方法了。在 Golang 里它实现继承是靠在结构体里嵌入一个匿名结构体,这样便实现了继承,这个和很多的 OOP 语言不一样, Golang 把面向对象编程弱化了,它不希望结构体之间有太多封装和继承在里面,包括后面在学习接口时也能体现这个特点。示意图如下:

image.png

 

二、嵌套匿名结构体基本语法

type Goods struct {    //Goods 是商品/货物的意思。任何一个商品或/货物都有其名字和价格

Name string

Price int

}

type Book struct { //结构体为 Book

Goods //这里就是嵌套匿名结构体 Goods

Writer string

}

Book 也是一种商品,若不想把其名字和价格再写一遍,那么就可以嵌套匿名结构体 Goods ,这时 Book 结构体相当于拥有了 Name 和Price 这两个字段;当你想把 Goods 引进来时,可以用和 Goods 绑定的方法。

 

相关文章
|
9月前
|
Java 编译器
你一定要学会的Java语法 -- 【继承】
你一定要学会的Java语法 -- 【继承】
62 0
|
3月前
多态的具体用法
多态的具体用法
20 1
|
Java API 开发者
Lambda表达式:简介、语法和用法
Lambda表达式:简介、语法和用法
14915 8
Lambda表达式:简介、语法和用法
|
4月前
|
存储 C++
C++中类和对象的多态性及其基本语法讲解
C++中类和对象的多态性及其基本语法讲解
24 1
|
9月前
|
安全 Java
多态语法详解
多态语法详解
51 1
|
9月前
继承语法详解
继承语法详解
50 0
|
9月前
ES6学习(十一)—Class 的基本语法和继承
ES6学习(十一)—Class 的基本语法和继承
|
11月前
|
编译器 程序员 C++
C++基础语法(继承)
C++基础语法(继承)
50 0
|
存储 安全 数据安全/隐私保护
【100天精通python】Day12:面向对象编程_属性和继承的基本语法与示例
【100天精通python】Day12:面向对象编程_属性和继承的基本语法与示例
80 0
|
存储 Java 开发者
1.1 Lambda表达式的基础:Lambda表达式的定义与语法
1.1 Lambda表达式的基础:Lambda表达式的定义与语法
92 0