You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Трейты (Traits) используются чтоб обмениваться между классами информацией о структуре и полях. Они похожи на интерфейсы из Java 8. Классы и объекты могут расширять трейты, но трейты не могут быть созданы и поэтому не имеют параметров.
18
+
Трейты (Traits) используются, чтобы обмениваться между классами информацией о структуре и полях. Они похожи на интерфейсы из Java 8. Классы и объекты могут расширять трейты, но трейты не могут быть созданы и поэтому не имеют параметров.
19
19
20
20
## Объявление трейта
21
21
Минимальное объявление трейта - это просто ключевое слово `trait` и его имя:
@@ -35,7 +35,7 @@ trait Iterator[A] {
35
35
При наследовании от трейта `Iterator[A]` требует указание типа `A` а также реализация методов `hasNext` и `next`.
36
36
37
37
## Использование трейтов
38
-
Чтоб использовать трейты, необходимо наследовать класс от него используя ключевое слово `extends`. Затем необходимо реализовать все абстрактные члены трейта, используя ключевое слово `override`:
38
+
Чтобы использовать трейты, необходимо наследовать класс от него, используя ключевое слово `extends`. Затем необходимо реализовать все абстрактные члены трейта, используя ключевое слово `override`:
39
39
```scala mdoc:nest
40
40
traitIterator[A] {
41
41
defhasNext:Boolean
@@ -62,7 +62,7 @@ iterator.next() // вернет 1
62
62
Этот класс `IntIterator` использует параметр `to` в качестве верхней границы. Он наследуется от `Iterator[Int]`, что означает, что метод `next` должен возвращать Int.
63
63
64
64
## Подтипы
65
-
Туда где требуется определенный тип трейта, мы можем передавать любой наследованный от требуемого трейта класс
65
+
Туда, где требуется определенный тип трейта, мы можем передавать любой наследованный от требуемого трейта класс
66
66
```scala mdoc
67
67
importscala.collection.mutable.ArrayBuffer
68
68
@@ -81,4 +81,4 @@ animals.append(dog)
81
81
animals.append(cat)
82
82
animals.foreach(pet => println(pet.name)) // выведет "Harry" и "Sally"
83
83
```
84
-
У трейта `Pet` есть абстрактное поле `name`, которое реализовано в классах `Cat` and `Dog`. В последней строке мы вызываем `pet.name`, который должен быть реализован в любом подтипе унаследованным от трейта `Pet`.
84
+
У трейта `Pet` есть абстрактное поле `name`, которое реализовано в классах `Cat` and `Dog`. В последней строке мы вызываем `pet.name`, который должен быть реализован в любом подтипе, унаследованном от трейта `Pet`.
0 commit comments