E064: Abstract Override Only In Traits
This error is emitted when abstract override is used on a member outside of a trait.
The abstract override modifier is only allowed for members of traits. It indicates that the member will override a concrete member from a superclass but requires further implementation when the trait is mixed into a class.
Example
class Base:
def greet: String = "Hello"
class Child extends Base:
abstract override def greet: String = super.greet + "!"
Error
-- [E064] Syntax Error: example.scala:5:24 -------------------------------------
5 | abstract override def greet: String = super.greet + "!"
| ^
| abstract override modifier only allowed for members of traits
Solution
// Use abstract override in a trait
class Base:
def greet: String = "Hello"
trait Greeter extends Base:
abstract override def greet: String = super.greet + "!"
class Child extends Base with Greeter
// Or use a regular override in a class
class Base:
def greet: String = "Hello"
class Child extends Base:
override def greet: String = super.greet + "!"
In this article