If I understand you correctly, then this is what you want?
class A(val aVal: Int) {
def this(a:A)={
this(a.aVal)
}
}
class B(aVal:Int, val bVal:Int) extends A(aVal){
def this(b:B) = {
this(b.aVal, b.bVal)
}
}
object Test extends App{
println("hello")
val b=new B(3,4)
val b_copy=new B(b)
println(b.bVal,b.aVal)
println(b_copy.bVal,b_copy.aVal)
}