Skip to content

Commit c90e259

Browse files
committed
modified based on comments
1 parent aa9de2b commit c90e259

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

_zh-cn/tour/traits.md

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ discourse: false
77
partof: scala-tour
88

99
num: 5
10+
11+
language: zh-cn
12+
1013
next-page: mixin-class-composition
1114
previous-page: classes
1215
topics: traits
@@ -15,11 +18,12 @@ prerequisite-knowledge: expressions, classes, generics, objects, companion-objec
1518
redirect_from: "/tutorials/tour/traits.html"
1619
---
1720

18-
特质 (Traits) 是用于在类 (Class)之间共享程序接口 (Interface)和字段 (Fields)的。 它们类似于Java 8的接口。 类和对象 (Objects)可以扩展特质,但是特质不能被实例化,因此特质没有参数。
21+
特质 (Traits) 用于在类 (Class)之间共享程序接口 (Interface)和字段 (Fields)。 它们类似于Java 8的接口。 类和对象 (Objects)可以扩展特质,但是特质不能被实例化,因此特质没有参数。
22+
1923

2024

2125
## 定义一个特质
22-
最小特质可以用关键字“trait”和一个标识符来代表
26+
最简化的特质就是关键字trait+标识符
2327

2428
```tut
2529
trait HairColor
@@ -33,7 +37,7 @@ trait Iterator[A] {
3337
}
3438
```
3539

36-
扩展 `trait Iterator [A]` 需要一个类型 `A` 和实施方法`hasNext``next`
40+
扩展 `trait Iterator [A]` 需要一个类型 `A` 和实现方法`hasNext``next`
3741

3842
## 使用特质
3943
使用 `extends` 关键字来扩展特征。然后使用 `override` 关键字来实现trait里面的任何抽象成员:
@@ -64,7 +68,7 @@ iterator.next() // returns 1
6468
这个类 `IntIterator` 将参数 `to` 作为上限。它扩展了 `Iterator [Int]`,这意味着方法 `next` 必须返回一个Int。
6569

6670
## 子类型
67-
在一个特质是必要的的情况下,它的子类型可以代替这个特质被使用
71+
凡是需要特质的地方,都可以由该特质的子类型来替换
6872
```tut
6973
import scala.collection.mutable.ArrayBuffer
7074
@@ -83,4 +87,4 @@ animals.append(dog)
8387
animals.append(cat)
8488
animals.foreach(pet => println(pet.name)) // Prints Harry Sally
8589
```
86-
在这里 `trait Pet` 有一个抽象字段 `name``name` 由Cat和Dog的构造函数中实现。在最后一行,我们调用 `pet.name``Pet` 的任何子类型中都必须有`pet.name`
90+
在这里 `trait Pet` 有一个抽象字段 `name``name` 由Cat和Dog的构造函数中实现。最后一行,我们能调用`pet.name`的前提是它必须在特质Pet的子类型中得到了实现

0 commit comments

Comments
 (0)