You are changing the signature of the method, so it is not a legal override, it would break polymorphism. You must either parametrize the Converter
trait or use another method name.
You can, however, receive a Base
object and cast it, but it is not recommended practice since it may result in an exception at runtime:
object ConverterBaseOne extends Converter {
override def toAClass[T <: Base](e: T): AClass = {
printf(e.asInstanceOf[BaseOne].b)
// ...
}
}