Scala Programming

  1. Object-Oriented Programming in Scala
    1. Classes
      1. Defining a Class
        1. Constructors
          1. Primary Constructor
            1. Auxiliary Constructors
            2. Fields and Methods
              1. Defining Fields
                1. Defining Methods
                  1. Getters and Setters
                  2. Access Modifiers
                    1. private
                      1. protected
                        1. public
                          1. Scope-based Protection
                          2. Class Parameters vs Fields
                            1. Companion Classes
                            2. Objects
                              1. Singleton Objects
                                1. Defining Singleton Objects
                                  1. Use Cases for Singleton Objects
                                  2. Companion Objects and Companion Classes
                                    1. Shared Access to Private Members
                                      1. Factory Methods
                                      2. The apply Method as a Factory
                                        1. Defining apply
                                          1. Usage Patterns
                                          2. Main Method and Application Entry Points
                                          3. Case Classes
                                            1. Defining Case Classes
                                              1. Automatic Generation of Methods
                                                1. equals
                                                  1. hashCode
                                                    1. toString
                                                      1. copy
                                                        1. unapply
                                                        2. Immutable by Default
                                                          1. Automatic Companion Object with apply
                                                            1. Support for Pattern Matching
                                                              1. Case Objects
                                                              2. Traits
                                                                1. Defining Traits
                                                                  1. Traits as Interfaces
                                                                    1. Traits with Concrete Members
                                                                      1. Mixing in Multiple Traits
                                                                        1. Trait Composition with with
                                                                          1. Linearization of Trait Inheritance
                                                                            1. Stackable Modifications
                                                                              1. Diamond Problem Resolution
                                                                              2. Inheritance and Polymorphism
                                                                                1. Extending a Class
                                                                                  1. Overriding Methods
                                                                                    1. Abstract Classes
                                                                                      1. Defining Abstract Classes
                                                                                        1. Abstract Members
                                                                                        2. Final Classes and Methods
                                                                                          1. Anonymous Classes
                                                                                            1. Type Hierarchies
                                                                                              1. Dynamic Binding