Руководство по Scala. Трейты (Traits).

В данной статье мы рассмотрим трейты (traits) в Scala.

Трейт – это сущность, которая инкапсулирует поля или методы, которые потом могут быть использованы для вставки в другие классы. Данный механизм помогает нам обходить отсутствие множественного наследования в Scala – мы можем использовать любое количество трейтов в классе.

Для понимания того, как это работает на практике, рассмотрим простой пример:
Создадим трейт BaseTrait


package net.proselyte.scalatutorial.traits

/**
  * Simple trait that contains fields id and name.
  *
  * @author Eugene Suleimanov
  */

trait BaseTrait {
  def isScalaDeveloper (x: String): Boolean = x.equals("Scala Developer");
}

Используем данный трейт в классе Developer


package net.proselyte.scalatutorial.traits

/**
  * Simple Scala class that represents Developer and extends BaseTrait.
  *
  * @author Eugene Suleimanov
  */

class Developer(sSpecialty: String) extends BaseTrait {
  var specialty:String = sSpecialty;
}

И выполним следующую программу:


package net.proselyte.scalatutorial.traits

/**
  * Simple Scala class that demonstrates class Developer in action.
  *
  * @author Eugene Suleimanov
  */
object DeveloperDemo {
  def main(args: Array[String]) {
    val scalaDeveloper = new Developer("Scala Developer");
    val javaDeveloper = new Developer("Java Developer");

    println(scalaDeveloper.isScalaDeveloper(scalaDeveloper.specialty));
    println(javaDeveloper.isScalaDeveloper(javaDeveloper.specialty));
  }
}

В результате выполнения данной программы мы получим следующий вывод в консоль:


true
false

Process finished with exit code 0

В данном примере мы импортировали метод isScalaDeveloper из трейта BaseTrait.

На этом мы заканчиваем изучение трейтов в Scala.
В следующей статье мы рассмотрим совпадение шаблонов в данном языке программирования.