Scala 建構函式
阿新 • • 發佈:2018-12-10
Scala預設主建構函式
在scala中,如果不指定主建構函式,編譯器將建立一個主建構函式的建構函式。 所有類的主體的宣告都被視為建構函式的一部分。它也被稱為預設建構函式。
Scala預設主建構函式示例
class Student{
println("Hello from default constructor");
}
Scala主要建構函式
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
Scala次要(輔助)構造器
可以在類中建立任意數量的輔助建構函式,必須要從輔助建構函式內部呼叫主建構函式。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示例:構造器過載
在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