trait PhoneT { val num:String def printNum = println(num) } trait MtermT { val add:String def printAdd = println(add) } class PhoneC(val num:String) extends PhoneT { } class MtermC(val add:String) extends MtermT { } class Cellular(val num:String, val add:String) extends PhoneT with MtermT { } object CellularArray { def main(args:Array[String]) = { var pa = Array[PhoneT]( new PhoneC("111-1111"), new PhoneC("222-2222"), new Cellular("333-3333", "ccc@cccc") ) var ma = Array[MtermT]( new MtermC("aaa@aaaa"), new MtermC("bbb@bbbb"), new Cellular("444-4444", "ddd@dddd") ) for(p<-pa) p.printNum for(m<-ma) m.printAdd } }