在scala中,建構函式不是特殊的方法。Scala提供主要和任意數量的輔助建構函式。我們將在下面的例子中逐一個詳細解釋。
在scala中,如果不指定主建構函式,編譯器將建立一個主建構函式的建構函式。 所有類的主體的宣告都被視為建構函式的一部分。它也被稱為預設建構函式。
Scala預設主建構函式範例
class Student{
println("Hello from default constructor");
}
Scala提供了一個類的主建構函式的概念。如果程式碼只有一個建構函式,則可以不需要定義明確的建構函式。它有助於優化程式碼,可以建立具有零個或多個引數的主建構函式。
Scala主建構函式範例
class Student(id:Int, name:String){
def showDetails(){
println(id+" "+name);
}
}
object Demo{
def main(args:Array[String]){
var s = new Student(1010,"Maxsu");
s.showDetails()
}
}
將上面程式碼儲存到原始檔:Demo.scala中,使用以下命令編譯並執行程式碼 -
D:\software\scala-2.12.3\bin>scalac Demo.scala
D:\software\scala-2.12.3\bin>scala Demo
1010 Maxsu
可以在類中建立任意數量的輔助建構函式,必須要從輔助建構函式內部呼叫主建構函式。this
關鍵字用於從其他建構函式呼叫建構函式。當呼叫其他建構函式時,要將其放在建構函式中的第一行。
Scala二次建構函式範例
class Student(id:Int, name:String){
var age:Int = 0
def showDetails(){
println(id+" "+name+" "+age)
}
def this(id:Int, name:String,age:Int){
this(id,name) // Calling primary constructor, and it is first line
this.age = age
}
}
object Demo{
def main(args:Array[String]){
var s = new Student(1010,"Maxsu", 25);
s.showDetails()
}
}
將上面程式碼儲存到原始檔:Demo.scala中,使用以下命令編譯並執行程式碼 -
D:\software\scala-2.12.3\bin>scalac Demo.scala
D:\software\scala-2.12.3\bin>scala Demo
1010 Maxsu 25
在scala中,可以過載建構函式。下面我們來看一個例子。
class Student(id:Int){
def this(id:Int, name:String)={
this(id)
println(id+" "+name)
}
println(id)
}
object Demo{
def main(args:Array[String]){
new Student(101)
new Student(100,"Minsu")
}
}
將上面程式碼儲存到原始檔:Demo.scala中,使用以下命令編譯並執行程式碼 -
D:\software\scala-2.12.3\bin>scalac Demo.scala
D:\software\scala-2.12.3\bin>scala Demo
101
100
100 Minsu