То, что делает Scala внутри, это то, что вы описываете как метод B.
Возьмем следующий пример класса:
abstract class Test{
val path: String
}
Когда вы скомпилируете это с помощью scalac, он сгенерирует абстрактный класс Java с абстрактным методом attr, который возвращает String. Причина, по которой это может произойти, состоит в том, что значение val является постоянным и, таким образом, оно может эмулироваться только получателем, а не установщиком. Поэтому, если вы хотите получить доступ к этому классу из Java, вы можете просто переопределить абстрактный метод получения.
Это эквивалент класса Java, который будет создан (вывод javap):
public abstract class Test extends java.lang.Object implements scala.ScalaObject{
public abstract java.lang.String path();
public Test();
}