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