Короче, нет.
Короче говоря, это возможно, но это скорее взлом, а не правильное решение.
Вы можете переопределить X внутри того же имени пакета, что и исходный X, а затем полагаться на порядок jar загрузчика классов для загрузки вашего X первым.
Правильное решение - это редизайн вашей программы, позволяющий «внедрить» реализации. Например, таким образом
trait X {
def foo() = ....
... more methods to follow
}
object X extends X
object Y extends X
object A {
def bar(x: X) = x.foo()
...few more methods using X
}
object B {
def baz(x: X) = x.baz()
...few more methods using X
}