- 01Setting up (what you'll need)
- 02Your first output (println)
- 03Variables (val and var)
- 04Type annotations and basic types
- 05Branching (the if expression)
- 06Repeating (the for expression)
- 07Writing your own function
- 08Repeating (the while loop)
- 09Working with lists (List)
- 10Working with maps (Map)
- 11Classes (object orientation)
- 12case class
- 13Inheritance and traits
- 14Pattern matching (the match expression)
- 15The Option type (null safety)
- 16Higher-order functions, map and filter
- 17object (singletons)
- 18Strings and string interpolation
- 19for comprehensions
- 20[Project] Build a small inventory system
Inheritance and traits
This lesson covers class inheritance and the trait, which gives several types a shared capability.
A trait is close to an interface in other languages, but it can also carry an implementation. You use it by writing class Name extends TraitName.
The sample code defines trait Speakable { def speak(): String } and implements it with class Dog extends Speakable.
A common early stumble is choosing between a trait and ordinary class inheritance (extends). A Scala class can inherit from only one class, but traits can be combined several at a time with with.
In professional work, it is common to define a capability that cuts across several types — "can make a sound", "can be compared" — as a trait.
๐งช This site can't compile or run Scala directly, so it checks on the spot whether what you typed matches the reference code (scoring happens entirely in your browser โ nothing is sent anywhere).
