鍍金池/ 教程/ Scala/ Scala構(gòu)造函數(shù)
Scala方法重載
Scala模式匹配
Scala throw關(guān)鍵字
Scala提取器
Scala概述
Scala throws關(guān)鍵字
Scala finally塊
Scala正則表達(dá)式
Scala循環(huán)語(yǔ)句
Scala多線程
Scala函數(shù)
Scala final關(guān)鍵字
Scala方法覆蓋
Scala字符串
Scala線程實(shí)現(xiàn)
Scala異常處理
Scala類和對(duì)象
Scala數(shù)據(jù)類型
Scala單例和伴生對(duì)象
Scala構(gòu)造函數(shù)
Scala教程
Scala Case類和對(duì)象
Scala繼承
Scala開發(fā)環(huán)境安裝配置
Scala運(yùn)算符
Scala文件I/O
Scala線程方法
Scala變量
Scala try-catch語(yǔ)句
Scala基礎(chǔ)語(yǔ)法
Scala集合
Scala數(shù)組
Scala閉包
Scala訪問(wèn)修辭符
Scala this關(guān)鍵字

Scala構(gòu)造函數(shù)

在scala中,構(gòu)造函數(shù)不是特殊的方法。Scala提供主要和任意數(shù)量的輔助構(gòu)造函數(shù)。我們將在下面的例子中逐一個(gè)詳細(xì)解釋。

Scala默認(rèn)主構(gòu)造函數(shù)

在scala中,如果不指定主構(gòu)造函數(shù),編譯器將創(chuàng)建一個(gè)主構(gòu)造函數(shù)的構(gòu)造函數(shù)。 所有類的主體的聲明都被視為構(gòu)造函數(shù)的一部分。它也被稱為默認(rèn)構(gòu)造函數(shù)。

Scala默認(rèn)主構(gòu)造函數(shù)示例

class Student{  
    println("Hello from default constructor");  
}

Scala主要構(gòu)造函數(shù)

Scala提供了一個(gè)類的主構(gòu)造函數(shù)的概念。如果代碼只有一個(gè)構(gòu)造函數(shù),則可以不需要定義明確的構(gòu)造函數(shù)。它有助于優(yōu)化代碼,可以創(chuàng)建具有零個(gè)或多個(gè)參數(shù)的主構(gòu)造函數(shù)。

Scala主構(gòu)造函數(shù)示例

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中,使用以下命令編譯并執(zhí)行代碼 -

D:\software\scala-2.12.3\bin>scalac Demo.scala
D:\software\scala-2.12.3\bin>scala Demo
1010 Maxsu

Scala次要(輔助)構(gòu)造器

可以在類中創(chuàng)建任意數(shù)量的輔助構(gòu)造函數(shù),必須要從輔助構(gòu)造函數(shù)內(nèi)部調(diào)用主構(gòu)造函數(shù)。this關(guān)鍵字用于從其他構(gòu)造函數(shù)調(diào)用構(gòu)造函數(shù)。當(dāng)調(diào)用其他構(gòu)造函數(shù)時(shí),要將其放在構(gòu)造函數(shù)中的第一行。

Scala二次構(gòu)造函數(shù)示例

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中,使用以下命令編譯并執(zhí)行代碼 -

D:\software\scala-2.12.3\bin>scalac Demo.scala
D:\software\scala-2.12.3\bin>scala Demo
1010 Maxsu 25

Scala示例:構(gòu)造器重載

在scala中,可以重載構(gòu)造函數(shù)。下面我們來(lái)看一個(gè)例子。

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中,使用以下命令編譯并執(zhí)行代碼 -

D:\software\scala-2.12.3\bin>scalac Demo.scala
D:\software\scala-2.12.3\bin>scala Demo
101
100
100 Minsu

上一篇:Scala教程下一篇:Scala字符串