Chapter 6. Advanced Object-Oriented Programming In Scala
We’ve got the basics of OOP in Scala under our belt, but there’s plenty more to learn.
Overriding Members of Classes and Traits
Classes and traits can declare abstract members: fields, methods, and types. These members must be defined by a derived class or trait before an instance can be created. Most object-oriented languages support abstract methods, and some also support abstract fields and types.
Note
When overriding a concrete member, Scala requires the
override
keyword. It is optional when a subtype
defines (“overrides”) an abstract member. Conversely, don’t use
override
unless you are actually overriding a
member.
Requiring the
override
keyword has several benefits:
It catches misspelled members that were intended to be overrides. The compiler will throw an error that the member doesn’t override anything.
It catches a potentially subtle bug that can occur if a new member is added to a base class where the member’s name collides with an older derived class member that is unknown to the base class developer. That is, the derived-class member was never intended to override a base-class member. Because the derived class member won’t have the
override
keyword, the compiler will throw an error when the new base-class member is introduced.Having to add the keyword reminds you to consider what members should or should not be overridden.
Java has an optional
@Override
annotation for methods. It helps catch errors of the first type (misspellings), ...
Get Programming Scala now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.