E07140: all abstract methods/operators must be implemented
What went wrong
You're creating a dynamic class that extends an abstract type, but you haven't implemented all required abstract methods.
Worked examples
Compilable examples demonstrating this error and the correct fix:
- ek9 -q 115 (How do dynamic classes work in EK9?)
- ek9 -q 93 (How do I define a class in EK9?)
How to fix it
- Implement all abstract methods in dynamic class
- Check parent class for all abstract methods
- Each abstract method needs override in dynamic class
Common causes
- Missing method implementations in dynamic class
- Not aware of all abstract methods from parent
- Incomplete dynamic class definition
See also
Examples
Every example is compiled by the EK9 compiler: the first fails exactly as captioned, the others fix it.
Fails with E07140: all abstract methods/operators must be implemented
#!ek9 defines module error.e07140.bad defines trait Processor process() as abstract -> input as String <- output as String? validate() as abstract -> input as String <- valid as Boolean? defines program ProcessOrder() stdout <- Stdout() //validate() is not implemented processor <- () with trait of Processor as class override process() -> input as String <- output as String: "processed: " + input stdout.println(processor.process("order"))
Fixed: Implement every abstract method in the dynamic class
#!ek9 defines module error.e07140.good defines trait Processor process() as abstract -> input as String <- output as String? validate() as abstract -> input as String <- valid as Boolean? defines program ProcessOrder() stdout <- Stdout() processor <- () with trait of Processor as class override process() -> input as String <- output as String: "processed: " + input override validate() -> input as String <- valid as Boolean: input? if processor.validate("order") stdout.println(processor.process("order"))
Questions and answers
These Q&A entries show E07140 and its fix: