Why is override sometimes required for an abstract method?
问题 Based on a previous question, the following code compiles OK trait Logger { def log(msg: String): Unit } trait LoggerA extends Logger { def log(msg: String) = ??? } trait LoggerB extends Logger { override def log(msg: String) = ??? } class Logged1 extends LoggerA class Logged2 extends LoggerB class Logged3 extends LoggerA with LoggerB The override is not required in LoggerA because there is no concrete implementation of log in Logger . However if I remove the override from LoggerB it no