|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
类的属性初始化另外有一种写法:- fun main(args: Array<String>) {
- class A constructor(var a:Int=1,var b:Int=2){
- var num1:Int?=null
- var num2:Int?=null
- init {
- num1=a
- num2=b
- }
- }
- println(A().a)
- println(A().b)
- println(A().num1)
- println(A().num2)
- }
复制代码
就是在括号前面加个constructor关键字也可以,前面其实我们是把它省略了,A类里面的init代码块也是初始化数据用的,输出结果为:
跟java一样,类可以有多个构造函数,例如:
- fun main(args: Array<String>) {
- class A constructor(var a:Int=1,var b:Int=2){
- constructor(c:Int,d:Int,e:Int):this(1,2)
- }
- var a=A()
- var a1=A(3,4,5)
- println("${a.a} ${a.b}")
- println("${a1.a} ${a1.b}")
- }
复制代码
第二个构造器有3个参数,虽然我们给他穿了值但是不能用,因为其它构造函数必须进行初始化,输出结果为:
现在我们给他初始化一下:- fun main(args: Array<String>) {
- class A constructor(var a:Int=1,var b:Int=2){
- constructor(c:Int,d:Int,e:Int):this(1,2){
- num1=c
- num2=d
- num3=e
- }
- var num1:Int?=null
- var num2:Int?=null
- var num3:Int?=null
-
- }
- var a=A()
- var a1=A(3,4,5)
- println("${a.a} ${a.b}")
- println("${a1.a} ${a1.b} ${a1.num1} ${a1.num2} ${a1.num3}")
- }
复制代码
输出结果为:
我们还可以把一个构造函数给私有化,让外面不能实现,只允许实现我们规定的构造函数,例如:
- fun main (args: Array<String>) {
- class People private constructor(a:Int=1){
- var b:Int
- init {
- b=a
- }
- constructor():this(2)
- }
- var a=People()
- println(a.b)
- }
复制代码
输出结果为:
还有一种叫做伴生对象的用法,就是直接用类名就可以调用的方法,如:
- fun main (args: Array<String>) {
- C.bar()
- }
- class C {
- companion object {
- fun bar() {
- println("Companion object called")
- }
- }
- }
复制代码
伴生对象的类必须声明在主函数外面才可以,输出结果为:
|
|