Go语言编程(十三)之匿名组合

释放双眼,带上耳机,听听看~!

   确切的说,Go语言也提供了继承,但是采用了组合的文法,所以我们将其称为匿名组合:


1
2
1type Base struct {
2

1
2
1    Name string
2

1
2
1}
2

1
2
1func (base *Base) Foo() {...}
2

1
2
1func (base *Base) Bar() {...}
2

1
2
1type Foo struct {
2

1
2
1    Base
2

1
2
1    ...
2

1
2
1}
2

1
2
1func (foo *Foo) Bar() {
2

1
2
1    foo.Base.Bar()
2

1
2
1    ...
2

1
2
1}
2

1
2
1 以上代码定义了一个Base类(实现了Foo()和Bar()两个成员方法),然后定义了一个Foo类,该类从Base类“继承”并改写了Bar()方法(该方法实现时先调用了基类的Bar()方法)。
2

在“派生类”Foo没有改写“基类”Base的成员方法时,相应的方法就被“继承”,例如上面的例子中,调用foo.Foo()和调用foo.Base.Foo()效果一致。

给TA打赏
共{{data.count}}人
人已打赏
安全技术

C++ 中 struct和class 的区别

2022-1-11 12:36:11

病毒疫情

7市1区无住院患者,96.27%确诊患者已治愈

2020-3-7 8:51:00

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索