Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Jul 14, 2023. It is now read-only.

Commit 81332e8

Browse files
update(oop): update fundamental oop tutorial
更新面向对象入门,例子篇 #12
1 parent e17ea66 commit 81332e8

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

‎common/oop.md‎

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,17 @@
4949

5050
大聪明鬼,这就是 Go 语言面向对象的简单实现了!!!
5151

52+
把属性和行为塞(封装)到结构体里面之后,和之前的面向过程有什么不一样?
53+
54+
之前的函数调用,学生属于形参,是传进去的。 `getInfo(user)` ,
55+
而现在,学生是调用方,是主体, `user.GetInfo()`
56+
57+
换句话说,之前的函数调用, 操作的是外部的数据信息。而现在,变量(属性)操作(方法)
58+
成为了类型的一部分,是固有的。一旦这个类型建立了,那它对应的变量什么的,也都直接附带上了。
59+
同时,利用对象调用方法,更像是一种「操作」,什么叫操作?就是,我这个对象,里面有些数据,
60+
通过调用某个方法,修改了对象内的一些信息,「操作」了一下。就这么先这么狭义理解。
61+
62+
5263
有个小细节需要注意,当函数和对象结合的时候,它就不叫函数了,叫「方法」。任何语言都是如此。
5364

5465
不同语言面向对象的实现方法都不一样,大部分面向对象的语言,都是用 `class` 关键字实现的,
@@ -110,11 +121,15 @@ A类 `继承` B类,表明,A类拥有B类的所有属性(特征)和方法
110121

111122
其实,我们可以定义一个「学校师生」父类,「学生类」和「教职工」类分别继承它。
112123
「学校师生」类可以定义一个「查询信息」方法,然后另外两个类 `重写` 这个方法。
124+
即,父类有个 `getInfo()` 的方法,两个子类也各有一个 `getInfo()` 的同名方法。
113125

114126
这么做有什么好处?怎么还不讲多态???
115127

116128
多态有很多种,这里讲一种。比如,你可以定义一个基类的变量(指针),它是可以引用(指向)
117-
所有父类的。换句话说,你可以定义一个「学校师生」类的变量,无论是传了「学生类」还是「教职工」类的对象,
118-
编译器都能找到对应的方法,即,它知道该调用哪个查询信息的方法。
129+
所有父类的。换句话说,你可以定义一个「学校师生」类的变量,
130+
然后查询信息的时候,直接调用 `父类.getInfo()`
131+
无论你是通过「学生类」还是「教职工」类的对象调用的这个方法,
132+
编译器都能找到对应的方法,即,它知道该调用哪个查询信息的方法,即,
133+
如果是学生调用这个方法,就查询学生信息,如果是老师就查询老师信息。非常的阳间。
119134

120135
未完待续。。。

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /