Contents x
10 Composition and Inheritance 209
10.1 A two-dimensional layout library . . . . . . . . . . . . 209
10.2 Abstract classes . . . . . . . . . . . . . . . . . . . . . 210
10.3 Defining parameterless methods . . . . . . . . . . . . . 211
10.4 Extending classes . . . . . . . . . . . . . . . . . . . . 214
10.5 Overriding methods and fields . . . . . . . . . . . . . . 216
10.6 Defining parametric fields . . . . . . . . . . . . . . . . 217
10.7 Invoking superclass constructors . . . . . . . . . . . . . 219
10.8 Using override modifiers . . . . . . . . . . . . . . . . 220
10.9 Polymorphism and dynamic binding . . . . . . . . . . 222
10.10 Declaring final members . . . . . . . . . . . . . . . . . 224
10.11 Using composition and inheritance . . . . . . . . . . . 226
10.12 Implementing above, beside, and toString . . . . . . 227
10.13 Defining a factory object . . . . . . . . . . . . . . . . . 229
10.14 Heighten and widen . . . . . . . . . . . . . . . . . . . 231
10.15 Putting it all together . . . . . . . . . . . . . . . . . . . 235
10.16 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . 236
11 Scala’s Hierarchy 237
11.1 Scala’s class hierarchy . . . . . . . . . . . . . . . . . . 237
11.2 How primitives are implemented . . . . . . . . . . . . 241
11.3 Bottom types . . . . . . . . . . . . . . . . . . . . . . . 243
11.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . 244
12 Traits 245
12.1 How traits work . . . . . . . . . . . . . . . . . . . . . 245
12.2 Thin versus rich interfaces . . . . . . . . . . . . . . . . 248
12.3 Example: Rectangular objects . . . . . . . . . . . . . . 249
12.4 The Ordered trait . . . . . . . . . . . . . . . . . . . . 252
12.5 Traits as stackable modifications . . . . . . . . . . . . . 254
12.6 Why not multiple inheritance? . . . . . . . . . . . . . . 258
12.7 To trait, or not to trait? . . . . . . . . . . . . . . . . . . 262
12.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . 263
13 Packages and Imports 264
13.1 Packages . . . . . . . . . . . . . . . . . . . . . . . . . 264
13.2 Imports . . . . . . . . . . . . . . . . . . . . . . . . . . 268
13.3 Implicit imports . . . . . . . . . . . . . . . . . . . . . 272
Cover · Overview · Contents · Discuss · Suggest · Glossary · Index