速学scala第五章練習問題の構築器


速学scala第五章練習問題の構築器:
6.8製造業者、モデル名、モデル年、およびナンバープレート用に読み取り専用属性で対応するCarクラスを作成します.4組のコンストラクタを提供します.各コンストラクタfcは、メーカーとモデルが必須であることを要求します.型番年とナンバープレートはオプションで、記入していない場合は型番年は-1、ナンバープレートは空欄です.メインコンストラクタとしてどれを選択しますか?どうして? 
4つのプロパティを選択すると、他のコンストラクタはこれに基づいて直接コードを割り当てることができます.
package Chapter5

object Car5 {
   def main(arg:Array[String]){
    var car1=new Car("BWM","A6")
    car1.PrintAll()
     var car2=new Car("BWM","A6",2000)
    car2.PrintAll()
     var car3=new Car("BWM","A6","A01")
    car3.PrintAll()
     var car4=new Car("BWM","A6",2000,"A01")
    car4.PrintAll()
   }
   
  class Car( val producerName:String,val productName:String,val productyear:Int,var num:String){
    def this( producerName:String, productName:String){
      this(producerName, productName,-1,"")
      
    }
    def this( producerName:String, productName:String,productyear:Int){
      this(producerName, productName,productyear,"")
    }
    def this( producerName:String, productName:String,num:String){
      this( producerName:String, productName:String,-1,num)
    }
    def PrintAll(){
      println("producerName:"+producerName+" productName:"+productName+" productyear:"+productyear+" num:"+num)
    }
  }
}

実行結果:
producerName:BWM productName:A6 productyear:-1 num:
producerName:BWM productName:A6 productyear:2000 num:
producerName:BWM productName:A6 productyear:-1 num:A01
producerName:BWM productName:A6 productyear:2000 num:A01