目錄
構造函數類型
主構造函數
成員變量設置
私有化操作
次級構造函數
構造函數類型
- 主構造函數(主構造器)——只能有一個
- 次構造函數(次構造器)——可以是多個
主構造函數
構造器 constructor關鍵字前 無注解或修飾符作用,可直接省略
class Singleton private constructor (age:Int){} class Singleton (age:Int){}
成員變量設置
??? ? ?//在構造器直接初始化(用var/val修飾變量)
class Singleton private constructor (var age:Int = 20){? ? ? ?//?在構造器聲明,在類內部初始化
class Singleton private constructor (age:Int = 20){private val age:Int = age? ? ? ?//在構造器聲明,在init初始化程序塊 初始化
class Singleton private constructor (age:Int = 20){private val age:Int init {this.age = age}
私有化操作
使外部無法通過主構造創建對象
class Singleton private constructor (var age:Int = 20){}
次級構造函數
目的:為類的構造提供多種結構,更靈活
語法規則:
- constuctor關鍵字不能省略
- 次級構造函數會直接或間接調用主構造函數
class Singleton private constructor ( age:Int ){constructor(name:String,age:Int) : this(age) {}constructor(sex:Char,name: String,age: Int) : this(name,age) {}
- 次構造函數調用()
fun main(){val sg1:Singleton = Singleton("zhoujun",3)val sg2:Singleton = Singleton('m',"zhoujun",3) }
- 次級構造函數調用父類次級構造
open class Person {constructor(name:String,age:Int){ } constructor(name: String,age: Int,sex:String):this(name,age){ } } class Man: Person{constructor(name:String,age: Int):super(name,age){ } constructor(name:String,age: Int,sex: String):super(name,age, sex){ }}
- 伴生類實現單例模式(具體參考http://t.csdnimg.cn/tV3OH)
class BAT private constructor(){ companion object{ //單例對象創建 } }