Scala interoperability with Java is not trivial. One of these none trivial cases is when a trait codes in Scala is been used from code written in java. When the trait contains abstract methods only then it is clear that the trait is mapped with an interface. The question is what happens when a trait contains abstract methods as well as implemented ones.
It seems that when we develop a trait (that includes both abstract and concrete methods) in Scala and compile it, the outcome includes two jave byte code files. The first includes the definition of an interface with an identical name to the one we gave our trait. The abstract methods that interface includes are the same methods defined in our trait. The other file includes the definition of a class that contains static methods for each one of the implemented methods in our trait. The name of that class starts with the name of our trait appended with '$class'. Given all that, we can take it into consideration when writing code in Java that uses a trait defined in Scala.
This video clip uses the Scala plugin for the Eclipse IDE (gallileo). During the course of using that plugin I found a small bug. It didn't recognize the new additional class that was generated due to the fact that the trait included a method together with implementation.
More relevant training material can be found in my Scala Fundamentals course, available for free personal and academic usage at www.abelski.com.